我有一个Child
模型,该模型具有一个称为EmergencyContactId
的属性。此属性是可为空的GUID,它在设置时指向我的Contacts
表(是的,该列在数据库中设置为可为空)。问题是,当我调用_context.Children.Add(newChild)
时,EF会自动将newChild
的EmergencyContactId
属性生成为新的GUID,即使它应该为null。
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只留下物业;如果为null,那就应该是这样!
看来这应该没有那么难,但我们来了。我完全不知所措。
编辑:我的模型
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);
最佳答案
这个EmergencyContactId
不是关系ID吗?如果是这样,可能是您已将对象(可能称为)EmergencyContact
设置为对象。在这种情况下,EmergencyContactId
也将自动用EmergencyContact
的ID填充。