run*_*007 5 .net entity-framework
我们的 SQL Server 数据库表中有一个由 SQL Server 自动生成的字段,该字段称为CreatedTime.
我们已将整个数据库表映射到实体框架中的数据模型,因此也将字段CreatedTime.
当我们通过实体框架在数据库中插入新行时,我们不会为 提供任何值CreatedTime。
这会导致插入失败并显示错误:
SqlDateTime 溢出。必须在 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
所以问题是:有没有办法在实体框架插入语句中排除实体数据模型中的特定字段?这样我们就不会得到上面的错误?
我们希望将字段保留CreatedTime在实体模型中,因为我们可能想稍后访问它。
如果使用 Fluent API:
using System.ComponentModel.DataAnnotations.Schema;
this.Property(t => t.CreatedTime)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
Run Code Online (Sandbox Code Playgroud)
如果使用注解
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public System.DateTime CreatedTime { get; set; }
Run Code Online (Sandbox Code Playgroud)
我在此线程上找到了解决该问题的简单方法:
费尔南多·索托写道:
“如果您转到 EDM 设计器,单击数据库自动生成的表中的字段,右键单击它并选择属性,然后查看属性窗口,单击 StoreGeneratePattern 并将其值设置为 Computed,我相信它会给你你正在寻找的东西。”
上述解决方案非常快速且简单,而且似乎有效。
还要感谢你们的贡献,但上述解决方案似乎可以完成这项工作。
| 归档时间: |
|
| 查看次数: |
7928 次 |
| 最近记录: |