Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HasDefaultValueSQL在数据库第一个实现中做什么?_C#_.net_Entity Framework - Fatal编程技术网

C# HasDefaultValueSQL在数据库第一个实现中做什么?

C# HasDefaultValueSQL在数据库第一个实现中做什么?,c#,.net,entity-framework,C#,.net,Entity Framework,我们使用的是实体框架3.1,并对.HasDefaultValueSQL有一些参考 entity.Property(e => e.UpdateTimeStamp) .HasColumnType("datetime") .HasDefaultValueSql("GetDate()"); 由于种种原因,我们不得不更改GetDate(),这只是代码中的一个地方,而实体框架中没有本地知识 我的问题是,HasDefaultValueSQL中的值

我们使用的是实体框架3.1,并对.HasDefaultValueSQL有一些参考

entity.Property(e => e.UpdateTimeStamp)
    .HasColumnType("datetime")
    .HasDefaultValueSql("GetDate()");
由于种种原因,我们不得不更改GetDate(),这只是代码中的一个地方,而实体框架中没有本地知识

我的问题是,HasDefaultValueSQL中的值在数据库第一个实现中做什么


我们已将该值更改并测试为多个其他字符串,目前为止,我们认为该值未被使用,但找不到任何类型的文档或指南,说明它的作用,以及在我们的情况下更改该值会起到什么作用。

您传递给
HasDefaultValueSql
的值在数据库优先方案中不被EF使用,但是,在模型上配置属性时调用该方法确实会产生影响

当您执行insert时,这意味着如果属性具有CLR默认值(null,或0表示int、空GUID等),它将从insert语句中忽略该列;它将避免显式地将列设置为该null(等)值,因为它理解数据库具有某种默认值(可能是提供的默认值,但它不检查该值,只是假设在数据库上配置了某些内容)

因此,如果数据库中有默认值,则应在模型中设置该值以使用它


我发现准确地为默认SQL建模的另一个很好的原因是,即使首先使用数据库,单元测试也可能使用代码优先的方法(即使用模型构建要测试的DB)。因此,让单元测试数据库准确是一个好主意。

None,它首先用于代码,其中实体定义将定义模式。如果EF要先在DB中运行,请确保关闭迁移/架构初始化,否则在手动更改架构后运行应用程序时,可能会出现验证异常。@StevePy这是我们当前的工作原理,我们只是没有证据,这使得向大国展示这一点不是一个理想的选择。