我只想知道Entity Framework如何在内部工作以在运行时显示属性及其类型,特别是在Code-First方法的情况下,它不会是系统生成的代码。有些人能抬起头来吗?我不认为System.Reflection被隐式使用了吗?
答案 0 :(得分:1)
代码优先首先作为EF功能的一部分呈现给开发人员 CTP1于2009年6月以“仅代码”为名。背后的基本前提 使用EF的这种变化是开发人员想要的 定义他们的域类,而不是理解物理模型。 但是,EF运行时依赖于该模型的XML来强制查询 将模型转换为数据库查询然后查询结果 从数据库返回到模型描述的对象。 如果没有这些元数据,EF就无法完成其工作。但元数据确实如此 不需要在物理文件中。 EF读取这些XML文件一次 在应用程序过程中,创建强类型元数据 基于该XML的对象,然后进行所有这些交互 内存中的XML。
代码首先也会创建内存中的元数据对象。而不是 通过读取XML文件来创建它,它从中推断出元数据 域类(参见图1)。它使用约定来执行此操作 提供了一种方法,您可以通过它添加其他配置 进一步完善模型。
模型构建器现在将这些附加信息考虑在内 它正在创建内存模型并计算出数据库模式。