Shop
public int ShopID {get;set;}
public string ShopName {get;set;}
public List<ShopAddresses> addresses {get;set;};
ShopAddresses
public int ShopId {get;set;}
public int AddressId {get;set;}
public Shop Shop {get;set;}
public Address Address {get;set;};
public AddressType AddressType {get;set;} //Enum value 1= physical 2 = postal
Address
public int AddressId {get;set;}
public string AddressLine1 {get;set;}
Когда я обновляю объект Shop двумя ShopAddresses, я получаю следующую ошибку.Entity Framework с использованием одного адреса с другим адресом адреса
Не удалось сохранить или принять изменения, поскольку более одного объекта типа «Адрес» имеют одинаковое значение первичного ключа. Убедитесь, что явно заданные значения первичного ключа уникальны. Убедитесь, что первичные ключи базы данных настроены правильно в базе данных и в модели Entity Framework. Используйте конструктор Entity Designer для конфигурации First First/Model First. Используйте «HasDatabaseGeneratedOption» свободно API или „DatabaseGeneratedAttribute“ для кода первой конфигурации.
Причина, почему я получаю эту ошибку, потому что моя коллекция ShopAddresses в магазин класса имеет два адреса с одинаковым идентификатором, но разных типов адресов. Это ожидание, поскольку я хочу использовать один и тот же адрес для другого типа адреса. Структура Entity видит, что у вас есть два новых адреса в ShopAddresses с тем же самым первичным ключом, и он выдает ошибку.
Есть ли способ сначала сконфигурировать код сущности для этого сценария?
Обход проблемы:
Я могу избежать этого, создав вручную 1 адрес с помощью нового ключевого слова и назначив его физическому и почтовому адресу (ShopAddresses). Этот подход кажется немного излишним.
Другой способ - создать повторяющийся адрес в базе данных с теми же данными, но с другим типом адреса. Я мог бы пойти с таким подходом, если инфраструктура сущности не поддерживает мой сценарий.