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