У меня есть два стола, автомобильный стол, который содержит различные свойства для автомобиля, и 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).
Вместо того, чтобы проходить через мой бизнес-уровень, я попытался выполнить данные в datalayer.Then, я просто получил сообщение об ошибке. Связь добавляется или удаляется из AssociationSet 'FK_Car_CarModelDefinition'. С ограничениями мощности необходимо также добавить или удалить соответствующее «CarModelDefinition». – 2009-03-28 16:59:07