0

我使用的是 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为当前日期?我已经尝试在同一个名称空间中创建一个具有相同名称等的辅助部分类,但它不起作用。也许我做错了助手类。理想情况下,即使在生成新模型类之后,我也希望帮助类保持不变。

4

1 回答 1

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而不是新建实例时使用。

于 2013-06-30T14:11:17.817 回答