这里有没有人使用LINQ to SQL来支持域的持久性 模型?
我不打算使用LINQ2SQL实体设计器,只是普通的手工编码XML映射,而且我目前遇到了障碍。
我正在尝试在我正在做的DDD示例中使用它,因为我的观众只知道LINQ2SQL。
答案 0 :(得分:0)
可以映射POCO,以便可以与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来做这件事。
如果没有明确地将属性及其映射写入数据模型,有没有更好的方法呢?