我对在使用EF Core时SQL中的特定场景很感兴趣。 例如,有一个允许为空并且同时具有默认值的列,这是不寻常的情况,但这不是问题所在。 问题是技术上的可能性。
[SomeId] [uniqueidentifier] NULL DEFAULT (newsequentialid())
在应用程序中有一个实体(Code First),其中具有适当的属性。
public Guid? SomeId { get; set; }
问题在于如何将此实体插入到数据库中,以便 SomeId 具有 Null 值。因为即使属性为 Null,数据库也会用默认值覆盖它。
可以通过纯 SQL 明确地将 Null 分配给列来完成此操作,但似乎 EF 无法执行同样的操作,我错了吗?
编辑: 为了更加详细说明:
public class ExampleTable
{
[Key]
int Id { get; set; }
string Name { get; set; }
Guid? SomeId { get; set; }
}
例如,在种子方法中(Seed method):
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);
由于SomeId是可空的Guid?,所以记录1和2是相同的,在提交后,数据库中的SomeId都会从newsequentialid获得实际值。是否有办法在数据库中也保持SomeId为空呢?