【发布时间】:2017-11-19 22:27:33
【问题描述】:
在 EF Core 和 EF6 中,调用属性“Date”(见下文)的 getter 会给出正确的值,但请注意两者之间的细微差别:在 EF Core 中永远不会调用 setter!
这是我的模型:
public class MyModel
{
private DateTime _Date;
private bool dateTimeHasBeenSet = false;
public DateTime Date
{
get
{
return _Date;
}
set
{
dateTimeHasBeenSet = true;
_Date = value;
}
}
}
这是我检索单个项目的方法:
//Entity Framework 6
using (Ef6Context context = new Ef6Context())
{
var m = context.MyModels.First();
// m.dateTimeHasBeenSet is true
}
//Entity Framework Core
using (EfCoreContext context = new EfCoreContext())
{
var m = context.MyModels.First();
// m.dateTimeHasBeenSet is false
}
EF 核心是否初始化备份字段而不是属性(通过反射)?这不违反封装吗?
我正在将一些代码从 EF6 迁移到 EF Core,我真的很想避免浪费时间手动调用每个 setter 背后的逻辑...
编辑:问这个问题让我尝试了一些花哨的东西,如果我将备份字段从 _Property 重命名为其他任何东西,如 _PropertyX(在本例中为 _DateX),我的 setter 被调用英孚核心!
【问题讨论】:
标签: c# entity-framework-6 entity-framework-core