1

ドメイン モデルの永続性をサポートするために LINQ to SQL を使用した人はいますか?

私は LINQ2SQL エンティティ デザイナーを使用する予定はありません。昔ながらの手でコーディングされた XML マッピングを使用するだけで、現在障害があります。

私の聴衆はLINQ2SQLしか知らないので、私がやっているDDDの例でそれを使用しようとしています。

4

1 に答える 1

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 でこれを行う必要はありませんでした。

プロパティとそれらのデータモデルへのマッピングを明示的に記述せずにこれを行うより良い方法はありますか?

于 2010-02-02T04:33:12.547 に答える