bor*_*sdj 5 null entity-framework nullable default-value
我很好奇使用 EF Core 时 SQL 中的具体场景。例如,有一列允许 null,同时具有默认值,这是不寻常的情况,但这不是这里的问题。问题是关于技术可能性。
[SomeId] [uniqueidentifier] NULL DEFAULT (newsequentialid())
Run Code Online (Sandbox Code Playgroud)
在应用程序中有一个具有适当属性的实体(代码优先)
public Guid? SomeId { get; set; }
Run Code Online (Sandbox Code Playgroud)
问题是如何将此实体插入到数据库中,以便SomeId具有 Null 值。因为即使属性为 Null,数据库也会用默认值覆盖它。
这可以通过将 null 显式分配给列来使用纯 sql 来完成,但似乎使用 EF 无法完成相同的操作,还是我错了?
编辑:详细说明
public class ExampleTable
{
[Key]
int Id { get; set; }
string Name { get; set; }
Guid? SomeId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以种子方法为例:
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);
Run Code Online (Sandbox Code Playgroud)
记录 1 和 2 是相同的,因为SomeId可以为 null Guid?,并且在这两种情况下,在数据库中提交SomeId后都会从newsequentialid获取实际值。有什么方法可以将SomeId保留在数据库中吗?
我不确定我是否完全理解这个问题,但通过修改您的声明,您可以设置默认值。创建记录时,“SomeId”将默认为NULL
public class ExampleTable
{
public ExampleTable()
{
SomeId = null;
}
public Guid? SomeId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4648 次 |
| 最近记录: |