我只是挑剔但我正在研究Entity Framework如何从EDMX文件生成DLL,我在msdn上看到了这个:
实体数据模型设计器(实体设计器)在设计时将模型和映射信息存储在.edmx文件中。在构建时,实体设计器使用.edmx文件中的信息来创建实体框架在运行时所需的.csdl,.ssdl和.msl文件。
我实际上发现奇怪的是它说“在构建时”.csdl,.ssdl和.msl被创建,所以我决定测试。 我知道这些文件是基于TablePerTypeStrategy.xaml流生成的,所以我将其删除并尝试构建我的应用程序。它成功了。
当我选择“从模型生成数据库”时,我确实收到错误消息,指出TablePerTypeStrategy.xaml文件丢失了。 所以我很困惑,很明显,当我尝试生成数据库而不是构建应用程序时,正在进行测试。
我在这里缺少什么?
答案 0 :(得分:14)
如果您有兴趣查看* .csdl,* .ssdl,*。msl文件,那么首先构建您的项目一次。现在,在选择项目(包含edmx文件)后,单击解决方案资源管理器中的“显示所有文件”按钮(显示为红色箭头),如下面的快照所示。
目录结构将其标记为obj\x86\Debug\edmxResourcesToEmbed
。所有特定于实体框架的xml文件都是在构建期间创建的,因为它们可以在obj
文件夹中看到并嵌入为资源。
我的项目中有两个edmx文件,即EFCoding.edmx
和Model1.edmx
,因此您可以看到每种类型文件的两个相应集合。希望这种观点可以帮助某人。
注意:所有这些EF元信息文件也可以简单地复制到项目输出目录(代替嵌入它们),只需按建议调整EF模型设计器的属性here
答案 1 :(得分:9)
这些文件(.csdl,.ssdl,.msl)在构建时生成,并作为资源嵌入到程序集中,供运行时的Entity Framework类使用。从模型生成数据库是生成数据库创建脚本的另一个过程。