2010-02-02 102 views
1

有沒有人在這裏使用LINQ to SQL來支持域 模型的持久性?LINQ2SQL,持久性無知和域模型

我不打算使用LINQ2SQL實體設計器,只是簡單的手工編碼的XML映射,我目前有障礙。

我正在嘗試在我正在做的DDD示例中使用它,因爲我的受衆只知道LINQ2SQL。

回答

0

POCOs可以被映射,因此它可以與DataContext一起使用。

但是,我發現映射有點泄漏。數據模型信息現在泄露給域實體。考慮下面這個例子:

<Table Name="dbo.products"> 
    <Type Name="Ptc.Store.Core.Product"> 
     <Column Name="id" Member="Id" IsDbGenerated="true" IsPrimaryKey="true" CanBeNull="false" DbType="INT NOT NULL IDENTITY" /> 
     <Column Name="name" Member="Name" CanBeNull="false" DbType="VARCHAR(50) NOT NULL" /> 
    </Type> 
</Table> 

<Table Name="[dbo].branches"> 
    <Type Name="Ptc.Store.Core.Branch"> 
     <Column Name="id" Member="Id" IsDbGenerated="true" IsPrimaryKey="true" DbType="INT NOT NULL IDENTITY" /> 
     <Column Name="name" Member="Name" CanBeNull="false" DbType="VARCHAR(50) NOT NULL" /> 
    </Type> 
</Table> 

<Table Name="[dbo].sales"> 
    <Type Name="Ptc.Store.Core.Sale"> 
     <Column Name="id" Member="Id" IsDbGenerated="true" IsPrimaryKey="true" CanBeNull="false" DbType="INT NOT NULL IDENTITY" /> 
     <Column Name="transaction_date" Member="TransactionDate" CanBeNull="false" DbType="DATETIME" /> 
     <Column Name="amount" Member="Amount" CanBeNull="false" DbType="MONEY" /> 
     <Association Name="sales_item" Member="Item" IsForeignKey="true" ThisKey="ProductId" OtherKey="Id" /> 
     <Association Name="sales_location" Member="Location" IsForeignKey="true" ThisKey="BranchId" OtherKey="Id" /> 

     <!-- Why do I have to map foreign keys? Looks leaky to me.--> 
     <Column Name="product_id" Member="ProductId" CanBeNull="false" DbType="INT" /> 
     <Column Name="branch_id" Member="BranchId" CanBeNull="false" DbType="INT" /> 
    </Type> 
</Table> 

更壞的是,我要對我的實體顯式聲明的屬性相匹配的數據模型的外鍵。我不需要用NHibernate來做到這一點。

有沒有更好的方法來做到這一點,而不明確寫入屬性及其映射到數據模型?