我在解决方案中有很多项目。其中一个项目称为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的方法和接口之前首先编译代码。