我一直在从事我的第一个实验性 DDD 项目。这个项目的目的是让我对整个 DDD 概念有一个感觉。奇怪的是,正如我所读的那样,它是更困难的部分,我发现无处不在的语言“翻译”比整个架构本身更容易,因此我的问题是。
我只在我过去的项目中使用过 L2S(Linq to SQL)。我的应用程序本身不是 DDD,但它们确实有一个业务对象(除了 linq to sql 生成的那些),我有一个用于该对象的存储库。例如,
public class Customer
{
public ID {get; set;}
public string Fullname {get; set;}
public Address address {get; set;}
public List<Invoices> invoices {get; set;}
}
现在,在 L2S 中,我必须将这个类分解为三个不同的查询并将它们提交到数据库中。我有一个映射器(扩展方法)让我的生活“更轻松”。像这样的东西。
public void AddCustomer(Customer customer)
{
// This customer i am passing is the business object
// For the sake of demo, i am going to avoid the whole attach(), check for ID, etc.
// I think you are going to get what i am trying to do here.
using{ var context = new L2SContext())
{
context.CustomerEntity.InsertOnSubmit(customer.ToEntity());
context.AddressEntity.InsertOnSubmit(customer.Address.ToEntity());
context.InvoicesEntity.InsertAllOnSubmit(customer.Invoices.ToEntity());
}
}
行。后来我在上下文中有一个 SubmitChanges() 方法,我实际上将数据保存到数据库中。
现在,我对 NHibernate 知之甚少,几乎一无所知。但是看看一些例子,我怀疑 NHibernate 会为你处理所有的故障(因为映射?)所以你只需要传递 Customer,它会做剩下的事情。那是对的吗?
如果我真的从中受益匪浅,我愿意学习 NHibernate。
感谢您查看我的问题。
编辑:你听说过 Codesmithtools.com 吗?他们有一个用于 LinqToSql、EF、NHibernate 的框架生成器。有人试过他们的 NHibernate 吗?我已经为 LinqToSql 使用了 PLINQO,但是它们给我认为不必要的类添加了很多废话。几乎这些类都适合用于糟糕的程序员,如业务类、DTO、ViewModels 等。多合一 :)。糟糕的。但是,他们真的很擅长生成所有这些。我必须为此给予他们 KUDOS。