我一直在做我的第一個實驗DDD項目。這個項目的目標是讓我感受到整個DDD概念。奇怪的是,正如我已經讀過這是更困難的部分,我發現無處不在的語言「翻譯」比整個建築本身更容易,因此我的問題。DDD與L2S或NHibernate ...關於堅持業務對象的數據
我只用於我以前的項目L2S(Linq to SQL)。我的應用程序本身不是DDD,但它們確實有一個Business Object(除了那些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?我已經使用PLINQO來處理LinqToSql,但是他們爲我認爲不需要的類添加了太多垃圾。幾乎適合使用的類,適用於不好的程序員,作爲商業類,DTO,ViewModels等All In One :)。可怕。但是,他們非常擅長產生這一切。我必須爲他們提供KUDOS。
是的,您只需保存客戶,然後NHibernate即可查看發票和其他實體已更改,並將爲您保存。當你不熟悉NHibernate時,有一個陡峭的學習曲線可以讓你的工作有效,但在那之後它是非常有價值的。 –
謝謝傑克。我正在研究一些教程。我對流利的nhibernate和nhibernate以及nhibernate MBC感到困惑?哪一個是我認爲你需要的? –
我只使用普通的舊NHibernate自己。發現流利NHibernate非常好,但我開發的服務失敗,因爲流利的NHibernate花了這麼長的時間來創建配置。那是幾年前,我確信自那以後事情已經發生了變化。沒有聽說過NHibernate的MBC,所以不能對此發表評論。如果我現在開始一個綠色領域項目,我會從流利的NHIbernate開始。如果需要,不難遷移到普通的NHibernate XML配置。 –