У меня есть модель, которая содержит следующее свойство:Entity Framework не сохранение данных
public Guid UniqueID
{
get { return Guid.NewGuid(); }
}
Если я исследую объект после того, как он будет создан, я могу видеть, что новые справы правильно созданы для UniqueID
поля.
Однако, когда я звоню db.SaveChanges()
, я получаю сообщение об ошибке от Entity Framework, заявляя, что он не может вставить NULL в это поле, несмотря на наличие значения.
Любые идеи?
EDIT
private Guid _uniqueID = Guid.NewGuid();
public Guid UniqueID
{
get
{
if(_uniqueID == null){
_uniqueID = Guid.NewGuid();
}
return _uniqueID;
}
set
{
_uniqueID = value;
}
}
Вы действительно хотите получить новый идентификатор GUID _every time you access property_? –
Да, поскольку на данный момент существует проблема с дублированными объектами в базу данных, которые мы в настоящее время пытаемся диагностировать и исправлять, но необходимо временное обходное решение. Это лучший способ гарантировать, что записи уникальны для временной ситуации, такой как наш. – DaRoGa
ID для объекта не должен меняться. Если вам нужен новый идентификатор для каждого объекта, создайте приватное поле, которое будет инициализировано новым значением GUID. Получение нового идентификатора каждый раз, когда вы получаете доступ к свойству, очень странно и может вызвать поведение, которое вы испытываете. –