eba*_*lga 14 c# entity-framework sql-server-2005 ado.net-entity-data-model
我有一个DateTime房产.我需要这个属性的默认值DateTime.Now.然后我发现您可以指定一个属性StoreGeneratedPattern="Computed"并将其设置为(getdate())SQL.这成功了.但我无法在代码中更改此属性.有时我需要将此属性更改为任何DateTime值.但是我的更改没有保存.
Ada*_*kis 15
将此属性设置为Computed会告诉EF您无法直接设置该值.你怎么能?此属性存在于计算列中,根据定义,列不会保存回数据库.
不幸的是,EF的"默认值"属性只能设置为编译时已知的值,因此不能 DateTime.Now
此链接提供了一个不错的解决方法:
将DateTime属性的默认值设置为System.ComponentModel内的DateTime.Now默认值Attrbute
您还可以SavingChanges在上下文中处理事件,并在那里添加默认值,但这只会在您实际调用SaveChanges()时发生,而不是在创建对象时发生.
partial void OnContextCreated() {
this.SavingChanges += new EventHandler(AccrualTrackingEntities_SavingChanges);
}
void AccrualTrackingEntities_SavingChanges(object sender, EventArgs e) {
List<Invoice> Invoices = this.ObjectStateManager
.GetObjectStateEntries(System.Data.EntityState.Added | System.Data.EntityState.Modified)
.Select(entry => entry.Entity)
.OfType<Invoice>().ToList();
foreach(Invoice I in Invoices)
if (I.EntityState == System.Data.EntityState.Added) {
//set default values
} else {
//?? whatever
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17321 次 |
| 最近记录: |