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?