私はここで簡単な何かが欠けていると思います。エラーが発生しました:
"PRIMARYKEY制約'PK_FeatureTypes'の違反。オブジェクト'dbo.FeatureTypeCodes'に重複キーを挿入できません。重複キー値は(28)です。\ r\nステートメントは終了しました。"
FeatureType-(Mountain、Lake、Riverなど)のルックアップ/リンクテーブルがあります。これにはすでにデータが入力されており、次のように定義されています。
[Table("FeatureTypeCodes")]
public class FeatureTypeCode {
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int FeatureTypeCodeID { get; set; }
public string Name { get; set; }
}
これは私の場所のテーブル/オブジェクトに次のようにリンクされています:
[Table("Places")]
public class Place {
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int PlaceID { get; set; }
public string Name { get; set; }
public FeatureTypeCode FeatureTypeCode { get; set; }
public ICollection<PlaceCoordinate> PlaceCoordinates { get; set; }
}
次に、次のように古いデータベースからそれらをロードしています(これは私の変換コードの一部です):
foreach (DataRow r in table.Rows) {
int ftID = Convert.ToInt32(r["FeatureTypeId"]);
Place temp = new Place {
PlaceID = Convert.ToInt32(r["PlaceID"]),
Name = r["PlaceName"].ToString(),
FeatureTypeCode = featureTypeCodeRepository.FeatureTypeCodes.FirstOrDefault(o=>o.FeatureTypeCodeID == ftID)
};
places.Add(temp);
}
Placeの保存中に、既存のオブジェクトと同じIDを持つ新しいFeatureTypeオブジェクトを挿入しようとすると、エラーが生成されます。私の考えでは、コンテキストからFeatureTypeをロードしても、Placeオブジェクトの保存時に新しいFeatureTypeを挿入しようとはしませんでした。私は明らかにそれについて間違っていますが、それは私が見逃している単純なものですか?