从数据库生成模型时,我在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));
使用此解决方法,我不必在每次构建后更改生成的模型文件。