entity-framework - EF Core 向具有默认值的可空列插入空值

标签 entity-framework null nullable default-value

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

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

在应用程序中有具有适当属性的实体(代码优先)
public Guid? SomeId { get; set; }

问题是如何将此实体插入数据库,以便 SomeId 具有 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 也保留在数据库中。

最佳答案

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

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

        public Guid? SomeId { get; set; }
    }

关于entity-framework - EF Core 向具有默认值的可空列插入空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969303/

相关文章:

c - C 中的 NULL 混淆

c# - EF6 嵌套事务

jquery - 如果数据库中存在记录则执行条件

android - 如何处理 Android 中未填充的 EditText

c# - 寻找一种更优雅的方法来检查可空值类型

kotlin - 我对以下 Kotlin 声明感到困惑

c# - Entity Framework 等效于ADO.Net的DataRow.HasErrors?

entity-framework - 必须为 Entity Framework 中的所有关键属性指定映射?

java - 使用 Java 反射返回所有 null

javascript - 将事物设置为未定义