利用生成的实体';的类构造函数

本文关键字:构造函数 实体 | 更新日期: 2023-09-27 18:20:22

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

利用生成的实体';的类构造函数

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>;
}

当您需要Student的新实例而不是新建实例时,您需要记住使用context.Set<Student>().Create()