Моя текущая настройка :
У меня есть объект сущности с некоторыми свойствами, среди которых int Id
. Для связи с базой данных я создал репозиторий, в частности, следующим методом:
public int Add(TEntity entity)
{
ObjectSet.AddObject(entity);
return entity.Id;
}
(Это универсальный репозиторий, который требует, чтобы TEntity
был class
, и чтобы он реализовал IEntity
, который является просто интерфейсом со свойством int Id
.)
Моя проблема:
Теперь, когда я хочу создать новый объект для добавления в репозиторий, мне нужно дать ему идентификатор. Однако это не позволяет EF автоматически генерировать идентификатор для меня, поскольку он уже будет иметь значение.
Возможные решения:
Я мог думать только об этих двух возможностях.
- Сделать свойство
Id
обнуляемым
- Вместо этого передайте
EntryInputModel
в хранилище, а затем выполните сопоставление там.
В настоящее время я привязываюсь к EntryInputModel
в моем контроллере и сопоставляю его с Entry
, используя AutoMapper . Если мне нужно изменить это, мне также нужно переосмыслить зависимости в моем проекте, поскольку классы ...InputModel
и ...ViewModel
в настоящее время доступны только для моего веб-приложения.
Что предпочтительнее? Есть ли еще способы противостоять этому?