【发布时间】:2013-06-30 10:48:27
【问题描述】:
我使用的是 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 设置为当前日期?我尝试在同一个名称空间中创建一个具有相同名称等的辅助部分类,但它不起作用。也许我做错了助手类。理想情况下,即使在生成新模型类之后,我也希望帮助程序类保持不变。
【问题讨论】:
-
我不确定我是否理解。构造函数中的
TimeStamp = DateTime.Now不起作用? -
确实如此,但它是一个生成的类,我不想对其进行更改。我经常重新生成我的模型。
-
EntityFramework 使用 T4 模板来生成代码。幸运的是,您可以用自己的模板替换此模板(或修改现有模板),以将其扩展到您的需要。在这里,您可以修改生成的类型构造函数。我们曾经使用它通过自动匹配接口来扩展类。
-
谢谢!可以发个例子吗?
标签: c# entity-framework oop entity-framework-5