使用MongoDB进行DDD

时间:2015-07-05 11:12:42

标签: mongodb domain-driven-design mongodb-.net-driver ef-fluent-api

我无法相信我没有找到关于它的好文章。所以它可能是一个1000次问的问题。

我正在编写一个样本,其中包括Nancy MVC,以及服务层,核心层,DAL。 DAL使用MongoDB的地方。我想要实现的是将MongoDB与Core分开。在任何一个例子中,我正在阅读有关mongoDB的内容,我看到的内容如下:

public class Customer
{       
    public ObjectId Id{get;set;}
    public string Name { get; set; }
    public string Address { get; set; }
    IEnumerable<string> Telephones { get; set; }
    [BsonElement("PublicWebPage")]
    public WebPage PublicPage { get; set; }
} 

我的理解并不是很好,因为我需要将MongoDB驱动程序安装到我的Core中。 另一方面,我可以尝试将这些模型放入DAL并在Core中编写几乎相同的模型,并借助一些映射器映射,这意味着它将是两个重复的对象。

我试图找到的方法可能是复制EF Fluent API方法,或任何不同的方法,可以帮助我保持模型清洁。

1 个答案:

答案 0 :(得分:2)

可以使用MongoDB中的属性映射的所有内容也可以以编程方式完成。避免ObjectId将是唯一的其他必要更改。请参阅此处的文档:http://mongodb.github.io/mongo-csharp-driver/2.0/reference/bson/mapping/

另外,另外两个模型对于非常不同的目的看起来几乎相同并没有错。根据您的应用程序,这可能是保持每个层的责任不会干扰他人的最佳方式。