我正在使用Database First,对于我的架构的每次更新,我都会更新EDMX文件并为我的模型生成新类。不幸的是,它不会生成我在数据库中指定的默认列值(例如'TimeStamp'这样的列'默认为'getdate()'。
以下是生成的Student.cs
类的外观:
namespace ABC.Data
{
using System;
public partial class Student
{
public Student()
{
}
public int StudentID { get; set; }
public string Name { get; set; }
public Nullable<System.DateTime> TimeStamp { get; set; }
}
}
有没有办法让构造函数始终将TimeStamp
设置为当前日期?我已经尝试在相同名称空间中创建一个辅助部分类,但它不起作用。也许我正在做帮手类错了。理想情况下,即使在生成新的模型类之后,我也希望辅助类保持不变。
答案 0 :(得分:0)
DbContext
类有一个名为ObjectMaterialized
的事件,您可以将其连接到...
context.ObjectMaterialized += ObjectContext_OnObjectMaterialized
此事件处理程序可以应用默认值。
private void ObjectContext_OnObjectMaterialized(
object sender, ObjectMaterializedEventArgs e)
{
if (e.Entity is Student)
(e.Entity as Student).TimeStamp = <default value>;
}
当您需要context.Set<Student>().Create()
的新实例而不是新建实例时,您需要记住使用Student
。