私は2つのテーブル、車の異なるプロパティを含む車のテーブル、同じ名前のテーブルの外来キーであるcarmodeldefinition
を持っています。 cardefinition
テーブルには、さまざまな車とモデルが含まれています。私はそれらをエンティティフレームワークにマッピングしました。私はcarmodeldefinition
以内に新しい車を追加しようとするとエンティティフレームワークと外部キー
は、それは単にちょうどそれが見つけたものを使用する代わりに、新しいcardefinition
を追加します。そのためのコードは下記の通りです:
DataLayer.Car car = new DataLayer.Car();
car.URL = carBulk.URL;
car.SellerCity = carBulk.SellerCity.ToString();
car.Color = carBulk.Color.ToString();
car.SellerStreet = carBulk.SellerStreet;
car.SellerName = carBulk.SellerName;
car.SellerCountry = carBulk.SellerCountry.ToString();
if (cdDTO != null && cdDTO.CarDefinitionId > 0)
{
car.CarModelDefinition = cdDTO.Transform(cdDTO);
}
mee.AddToCar(car);
mee.SaveChanges();
cdDTO.Transform(cdDTO)
データベースにマッピングすることができるオブジェクトへdatatransferobject
を変換します。奇妙なことに、cdDTO.Transform(cdDTO);
は、正しいcardefintionId
の正しいオブジェクトを返しますが、挿入すると、ちょうど新しいcardefinitionid
(これはpkです)の下に挿入されます。
私のビジネスレイヤーを通過するのではなく、データレイヤーのデータを処理しようとしました。エラーが発生しました。アソシエーションがアソシエーションセット 'FK_Car_CarModelDefinition'に追加または削除されています。カーディナリティー制約では、対応する 'CarModelDefinition'も追加または削除する必要があります。 –