不要在Linq To Sql中保存关联的对象

时间:2010-02-12 19:43:25

标签: linq-to-sql associations

我有一个实体(地址),它有一个相互关联的实体(国家)。

  <Table Name="dbo.Address" Member="Address">
    <Type Name="TS.Club.Domain.Model.ValueObject.Address">
      <Column Name="Identifier" Member="Identifier" DbType="UniqueIdentifier NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="false" AutoSync="OnInsert" />
      <Column Name="ReferenceIdentifier" Member="ReferenceIdentifier" DbType="UniqueIdentifier NOT NULL"/>
      <Column Name="CountryIdentifier" Member="CountryIdentifier" DbType="UniqueIdentifier NOT NULL"/>
      <Column Name="StreetAddress" Member="StreetAddress" DbType="Varchar(512)"/>
      <Column Name="ZipCode" Member="ZipCode" DbType="Varchar(8)"/>
      <Column Name="City" Member="City" DbType="Varchar(512)"/>
      <Column Name="AddressType" Member="Type" DbType="tinyint"/>

      <Association Member="Country" ThisKey="CountryIdentifier" IsForeignKey="true" DeleteRule="NO ACTION" />
    </Type>
  </Table>

我的问题是该国家/地区是我的数据库中的“硬编码”表,所以我希望它在我加载地址时加载,但我不希望它更新och插入我保存我的地址到数据库。现在我收到错误:无法使用已在使用的密钥添加实体。

如何解决这个问题,不可能,但我找不到解决方案。

1 个答案:

答案 0 :(得分:0)

您是否为每个地址创建了新的国家/地区副本?
一般来说,这是一种错误的做法。尝试选择这样的现有实体:

Country cc = from c 
db.Countries where c.CountryIdentifier == neededID select c;