EF Core 将空值插入具有默认值的可为空列

2024-02-29

我很好奇使用 EF Core 时 SQL 中的具体场景。 例如,有一列允许为空,同时具有默认值,这是不寻常的情况,但这不是这里的问题。 问题是关于技术可能性。

[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 相同,因为SomeIdGuid 是否可以为空?,并且在提交后的两种情况下SomeId在数据库中获取真正的价值新闻序列ID。 有什么办法可以保留SomeId数据库中也为空。


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

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

        public Guid? SomeId { get; set; }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF Core 将空值插入具有默认值的可为空列 的相关文章

随机推荐