私は最初の実験的な 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 では、このクラスを 3 つの異なるクエリに分割し、データベースに送信する必要があります。私は自分の人生を「より簡単に」するためのマッパー(拡張メソッド)を持っています。このようなもの。
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());
}
}
Ok。後で、実際にデータをデータベースに永続化するコンテキストに SubmitChanges() メソッドがあります。
さて、私は NHibernate についてほとんど何も知りません。しかし、いくつかの例を見ると、NHibernate が (マッピングのせいで) すべての内訳を処理してくれるのではないかと疑っています。あれは正しいですか?
NHibernate から大きなメリットが得られるのであれば、喜んで NHibernate を学びます。
私の質問をチェックしていただきありがとうございます。
編集: Codesmithtools.com について聞いたことがありますか? LinqToSql、EF、NHibernate 用のフレームワーク ジェネレーターがあります。NHibernate を試した人はいますか? 私はLinqToSqlにPLINQOを使用しましたが、それらはクラスに非常に多くのがらくたを追加するので、不要だと思います。ほとんどのクラスは、ビジネスクラス、DTO、ViewModelsなどとして、下手なプログラマーに使用するのに適しています。オールインワン:)。ひどい。しかし、彼らはそれをすべて生成するのが本当に得意です。私は彼らにKUDOSを与えなければなりません。