EF Core将null值插入具有默认值

时间:2017-01-31 23:22:35

标签: entity-framework null nullable default-value

我很好奇使用EF Core时SQL中的特定场景。 例如,有一个列允许null并且同时具有defalut值,这是不寻常的情况,但这不是问题。 问题是技术可能性。

[SomeId] [uniqueidentifier] NULL DEFAULT (newsequentialid())

在应用程序中有实体(代码优先),它具有适当的属性

public Guid? SomeId { get; set; }

问题是如何将此实体插入数据库,以便 SomeId 具有Null值。因为即使属性为Null,数据库也会使用默认值覆盖它。

这可以通过显式为列分配null来使用纯sql来完成,但似乎无法用EF完成相同的操作,或者我错了吗?

编辑: 详细说明

public class ExampleTable
{
    [Key]
    int Id { get; set; }

    string Name { get; set; }

    Guid? SomeId { get; set; }
}

以种子方法为例:

var record1 = new ExampleTable
{
    FirstName = "Carson"
}
var record2 = new ExampleTable
{
    FirstName = "Carson",
    SomeId = null
}
context.ExampleTableSet.Add(record1);
context.ExampleTableSet.Add(record2);
context.SaveChanges(record);

记录1和2是相同的,因为 SomeId 是可以为空的Guid ?,在两种情况下,在数据库中提交 SomeId 之后,从 newsequentialid获取实际值。 有没有办法在数据库中保持 SomeId Null。

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解了这个问题,但通过修改声明,您可以设置默认值。在创建唱片时,“SomeId'将默认为 NULL

    public class ExampleTable
    {
        public ExampleTable()
        {
            SomeId = null;
        }

        public Guid? SomeId { get; set; }
    }