EF在新实体创建期间设置datetime的默认值

时间:2014-07-15 06:22:38

标签: c# sql entity-framework datetime

从数据库生成模型时,我在SQL中有一些非空Date字段,其默认值设置为GetDate()。我知道如果我将StoreGeneratedPattern设置为Computed,那么在SaveChanges调用期间,将设置默认的SQL值。

但我的问题是我需要为我的UI日期控件设置一个新的默认日期范围,它应该只在实体的构造函数中设置(非常早期,在UI初始化之前)。

由于我的实体已经有一个默认构造函数,每次重建模型时,我都必须在模型.cs文件下编辑实体.tt文件,并在默认构造函数中添加以下行: / p>

this.Date = DateTime.Now;

任何想法特定于此场景(UI日期控制初始化)在其他地方写入此行而不是在每次构建后编辑模型?

更新

由于问题被标记为重复,我必须在此处编写我的解决方案:

如果您在实体中有一些字段,当您将这些类型的新项目添加到绑定到UI的集合时,可能需要进行特殊初始化,就会出现此问题。

我的解决方案是在使用反射创建后立即更改特殊类型的字段:

object obj = Activator.CreateInstance(this.Type, new object[] { });

MyCollection.Add(obj);

obj.GetType().GetProperties()
   .Where(x => x.PropertyType == typeof(DateTime))
   .ForEach(x => x.SetValue(obj, DateTime.Now));

使用此解决方法,我不必在每次构建后更改生成的模型文件。

0 个答案:

没有答案