Dar*_*ryl 5 sql-server asp.net-mvc triggers asp.net-mvc-3
我已经生成了类(DbContext)建模我的数据库(SQL Server 2008 R2),在我的大多数表中我都有标准的ModifiedDate和CreatedDate(No Nulls).其中每个都在SQLServer中有一个默认的getdate(),我有一个触发器可以在任何更新时更新ModifiedDate.
生成的视图包括ModifiedDate和CreatedDate字段,我不想要(用户不应该看到这些),所以我已经把它们拿出来了,但是当使用生成的Create视图添加新条目时,我收到错误"将datetime2数据类型转换为日期时间数据类型会导致超出范围的值".
然后我添加了一些默认值,它确实添加了记录,但自然它添加了我输入的值,而不是SQL getdate()值,我更喜欢(我希望它显示服务器时间).检查对象(db.SaveChanges())字段的值为{1/01/0001 12:00:00 AM}.
如何在不输入日期的情况下使用这些模型?我搜索过但没有找到答案...... ;-(
这是 Entity Framework 和 Linq to SQL 中的常见问题:
在 Linq-To-SQL 中,模型不知道默认值,因此尝试将它们分配为“null” - 在本例中这是不可接受的。要解决此问题,请打开 DBML 文件并将相关字段的“自动生成值”选项设置为“true”。
在实体框架中,情况略有不同:您将字段上的“StoreGeneratePattern”设置为“Identity”或“Compulated”。描述如下:
http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.store generatedpattern.aspx
EF 将为 Identity 类型字段自动执行此操作,但不会为默认值/非空字段执行此操作。您可能需要将 CreatedDate 设置为“Identity”(仅在插入时更新),将 ModifiedDate 设置为“Compulated”(在插入和更新时更新)。
这样做的副产品是您将根本无法通过 Linq 设置字段 - 但我认为这在您的用例中很好。
归档时间: |
|
查看次数: |
1991 次 |
最近记录: |