У меня есть модель Child
, свойство которой называется EmergencyContactId
.Это свойство является пустым GUID, который указывает на мою таблицу Contacts
, когда она установлена (и да, для столбца установлено значение nullable в базе данных).Проблема в том, что когда я вызываю _context.Children.Add(newChild)
, newChild
свойство *1005* автоматически генерируется EF как новый GUID, даже если оно должно быть нулевым.
var id = newChild.EmergencyContactId; // id is null.
_context.Children.Add(newChild);
id = newChild.EmergencyContactId; // id is a new GUID.
Итак, я попытался войти в свой OnModelCreating
контекст моей базы данных и сделать следующее:
child.Property(props => props.EmergencyContactId)
.HasDefaultValue(null)
.ValueGeneratedNever();
Я подумал, что это должно решить проблему, но не такая удача;значение по-прежнему генерируется автоматически.Я хочу, чтобы EF просто оставил собственность в покое;если он нулевой, то он должен быть таким!
Не кажется, что это должно быть так сложно, но мы здесь.Я в полной растерянности, что делать дальше.
РЕДАКТИРОВАТЬ: Моя модель
public class Child
{
// other properties
#region EmergencyContact
private Contact _emergencyContact = default(Contact);
public virtual Contact EmergencyContact { get => _emergencyContact; set => _emergencyContact = value; }
#endregion EmergencyContact
#region EmergencyContactId
private Guid? _emergencyContactId;
public Guid? EmergencyContactId { get => _emergencyContactId; set => _emergencyContactId = value; }
#endregion EmergencyContactId
// other properties
}
и ее конфигурация:
child.HasOne(props => props.EmergencyContact)
.WithMany()
.HasForeignKey(props => props.EmergencyContactId)
.HasPrincipalKey(contact => contact.Id);