如何在插入时忽略实体模型中的特定字段?

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在实体模型中,因为我们可能想稍后访问它。

Jas*_*ane 8

如果使用 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)


run*_*007 4

我在此线程上找到了解决该问题的简单方法:

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/7db14342-b259-4973-ac09-93e183ae48bb

费尔南多·索托写道:

“如果您转到 EDM 设计器,单击数据库自动生成的表中的字段,右键单击它并选择属性,然后查看属性窗口,单击 StoreGeneratePattern 并将其值设置为 Computed,我相信它会给你你正在寻找的东西。”

上述解决方案非常快速且简单,而且似乎有效。

还要感谢你们的贡献,但上述解决方案似乎可以完成这项工作。