LINQ2SQL, игнорирование персистентности и модели предметной области

Кто-нибудь здесь использовал LINQ to SQL для поддержки сохраняемости моделей предметной области?

Я не планирую использовать конструктор сущностей LINQ2SQL, а просто старое ручное XML-сопоставление, и в настоящее время у меня есть препятствия.

Я пытаюсь использовать его в своем примере DDD, поскольку моя аудитория знает только LINQ2SQL.


person leypascua    schedule 02.02.2010    source источник


Ответы (1)


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.

Есть ли лучший способ сделать это без явного написания свойств и их сопоставления с моделью данных?

person leypascua    schedule 02.02.2010