我在解决方案中有许多项目。其中一个项目,称为 MyDAL,定义了许多业务对象并使用 Entity Framework 通过
public class MyContext : DbContext
我刚刚在解决方案中添加了一个新项目,却忘记引用实体框架。
MyContext
仍然可用!没有编译错误(我想我会收到一个编译器错误,告诉我我缺少对定义 DbContext 的程序集的引用)。
我可以在MyContext
. 然而,
using (MyContext ctx = new MyContext())
给出编译器错误
'MyNs.MyContext':在 using 语句中使用的类型必须隐式转换为 'System.IDisposable'
和
ctx.SaveChanges();
给出错误
“MyNs.MyContext”不包含“SaveChanges”的定义,并且没有扩展方法“SaveChanges”接受...的第一个参数
就好像编译器默默地改变了一样
public class MyContext : DbContext
至
public class MyContext : object
我知道如何解决错误(添加缺少的引用),但我很好奇为什么在我开始引用 DbContext 的方法和接口之前首先编译的代码。