将实体添加到上下文时保留GUID为null

时间:2018-05-30 13:11:28

标签: c# sql entity-framework-core

我有一个Child模型,其中包含一个名为EmergencyContactId的属性。此属性是一个可空的GUID,在设置时指向我的Contacts表(是的,该列在数据库中设置为可为空)。问题是当我拨打_context.Children.Add(newChild)时,newChild的{​​{1}}属性会被EF自动生成为新的GUID,即使它应该为null 。

EmergencyContactId

所以我尝试进入我的var id = newChild.EmergencyContactId; // id is null. _context.Children.Add(newChild); id = newChild.EmergencyContactId; // id is a new GUID. 数据库上下文并执行此操作:

OnModelCreating

我认为应该解决问题,但没有这样的运气;该值仍然是自动生成的。我希望EF能够独自离开酒店;如果它为空,那么假设就是这样!

这似乎不应该这么难,但我们在这里。我完全不知道下一步该做什么。

编辑:我的模特

child.Property(props => props.EmergencyContactId)
    .HasDefaultValue(null)
    .ValueGeneratedNever();

及其配置:

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
}

1 个答案:

答案 0 :(得分:3)

EmergencyContactId不是关系ID吗?如果是,可能您已将对象(可能称为)EmergencyContact设置为对象。在这种情况下,EmergencyContactId也将自动填充EmergencyContact的ID。