1

我正在尝试创建一个简单的域模型,该模型旨在用于具有 MongoDB 和 C# 驱动程序的 ASP.NET Web API 项目,如位于此处的示例中。该示例显示以下实体:

public class Entity
{
    public ObjectId Id { get; set; }

    public string Name { get; set; }
}

我的问题是此类包含属于 MongoDB.Bson 命名空间的 ObjectId 类型的 Id 属性,需要在 Visual Studio 项目中引用。现在这一切都很好,除非我想在我的 Win RT(Windows 应用商店应用程序)项目中使用这个实体,在这种情况下我不能引用 MongoDB,因为不存在适当的绑定。

在我的 C# Win RT 项目中,我想从我的 REST API 中使用,它将返回包含该实体属性的 JSON,因此我想在 JSON.NET 的反序列化中重用 Entity 类。

从我的实体类中删除 MongoDB 依赖项的最佳方法是什么?最好将我的 Id 属性设置为字符串类型吗?如果是这样,我应该注意这种方法的含义吗?

4

1 回答 1

1

是的,我只是把它做成一个string. 不过,理想情况下,您可能会认为您在 WinRt 应用程序中使用的模型是视图模型,并且不使用本机 BSON 数据类型。

但是,当我完成类似的操作时,我通常会公开一个视图模型,并且没有与客户端共享对象的内部数据库表示。这通常是必要的,因为 UI 需要更复杂和解析的值(像 id 这样的东西ObjectId不如拥有 id 可能指向的数据有用)。

通过将其设置为string,您不会在 C# 中丢失太多,因为无论如何转换都超级简单且快速。

或者,您应该考虑使用此处BsonClassMap记录的。您可以从类型中拆分类型装饰,并仅在服务器上进行您想要的任何修改。

于 2013-10-27T12:04:36.740 回答