2010-02-02 6 views
1

Est-ce que quelqu'un ici a utilisé LINQ to SQL pour prendre en charge la persistance des modèles de domaine ?LINQ2SQL, modèles d'ignorance et de domaine de persistance

Je ne prévois pas d'utiliser le concepteur d'entité LINQ2SQL, mais simplement un mappage XML codé à la main et j'ai actuellement des roadblocks.

Je tente de l'utiliser dans un exemple DDD que je fais, puisque mon public ne connaît que LINQ2SQL.

Répondre

0

Les POCO peuvent être mappés afin de pouvoir être utilisés avec un DataContext.

Cependant, je trouve le mappage un peu fuyant. Les informations du modèle de données fuient maintenant vers l'entité de domaine. Considérez cet exemple:

<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> 

Le pire est que je dois déclarer explicitement les propriétés sur mes entités pour correspondre à des clés étrangères du modèle de données. Je n'ai pas eu à faire cela avec NHibernate.

Existe-t-il une meilleure façon de le faire sans écrire explicitement les propriétés et leur mappage au modèle de données?

Questions connexes