LINQ2SQL, непознаване на устойчивостта и модели на домейни

Някой тук използвал ли е LINQ към 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