创建可以在ASP.NET和Win RT应用程序中使用的MongoDB域模型?

时间:2013-10-27 10:23:06

标签: mongodb asp.net-web-api windows-runtime windows-store-apps

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

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属性改为类型字符串?如果有的话,我应该注意这种方法吗?

1 个答案:

答案 0 :(得分:1)

是的,我只是将其设为string。但理想情况下,您可能会认为您在WinRt应用程序中使用的模型是视图模型,并且不使用本机BSON数据类型。

当我做了类似的事情时,我通常会暴露一个视图模型,并且没有与客户端共享对象的内部数据库表示。这通常是必要的,因为UI需要更复杂和解决的值(像ObjectId这样的东西不像拥有id可能指向的数据那样有用)。

通过使它成为string,你不会在C#中失去太多,因为无论如何转换都非常简单快速。

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