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

创建一个可以在ASP.NET和Win RT应用程序中使用的MongoDB域模型?,mongodb,asp.net-web-api,windows-runtime,windows-store-apps,Mongodb,Asp.net Web Api,Windows Runtime,Windows Store Apps,我正试图创建一个简单的域模型,用于ASP.NETWebAPI项目中的MongoDB和C#驱动程序,如下面的示例所示。该示例显示了以下实体: public class Entity { public ObjectId Id { get; set; } public string Name { get; set; } } 我的问题是这个类包含一个ObjectId类型的Id属性,属于MongoDB.Bson名称空间,需要在VisualStudio项目中引用该名称空间。现在这一切都很

我正试图创建一个简单的域模型,用于ASP.NETWebAPI项目中的MongoDB和C#驱动程序,如下面的示例所示。该示例显示了以下实体:

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

    public string Name { get; set; }
}
我的问题是这个类包含一个ObjectId类型的Id属性,属于MongoDB.Bson名称空间,需要在VisualStudio项目中引用该名称空间。现在这一切都很好,除了我想在Win RT(Windows应用商店应用程序)项目中使用此实体时,在这种情况下,我无法引用MongoDB,因为不存在适当的绑定

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


从实体类中删除MongoDB依赖项的最佳方法是什么?是否最好将我的Id属性改为类型字符串?如果是这样的话,我应该知道这种方法有什么影响吗?

是的,我只是把它变成一个
字符串。理想情况下,您可能会认为,在WRRT应用程序中使用的模型是视图模型,不使用本机BSON数据类型。
但是,当我做了类似的事情时,我通常会公开一个视图模型,并且没有与客户机共享对象的内部数据库表示。这通常是必要的,因为UI需要更复杂和解析的值(像
ObjectId
这样的东西没有id可能指向的数据有用)

通过将其设置为
字符串
,在C#中不会有太大的松动,因为转换非常简单和快速


可选地,您应该考虑使用<代码> BSONCHROMAPG/<代码>。您可以将类型装饰从类型中分离出来,并仅在服务器上进行所需的任何修改

是的,我想把它做成一个
字符串。理想情况下,您可能会认为,在WRRT应用程序中使用的模型是视图模型,不使用本机BSON数据类型。
但是,当我做了类似的事情时,我通常会公开一个视图模型,并且没有与客户机共享对象的内部数据库表示。这通常是必要的,因为UI需要更复杂和解析的值(像
ObjectId
这样的东西没有id可能指向的数据有用)

通过将其设置为
字符串
,在C#中不会有太大的松动,因为转换非常简单和快速

可选地,您应该考虑使用<代码> BSONCHROMAPG/<代码>。您可以将类型装饰从类型中分离出来,并仅在服务器上进行所需的任何修改