17

我只是很挑剔,但我正在研究 Entity Framework 如何从 EDMX 文件生成 DLL,我在 msdn 上看到了这个:

实体数据模型设计器 (Entity Designer) 在设计时将模型和映射信息存储在 .edmx 文件中。在构建时,实体设计器使用 .edmx 文件中的信息来创建实体框架在运行时需要的 .csdl、.ssdl 和 .msl 文件。

实际上我觉得奇怪的是,“在构建时”创建了 .csdl、.ssdl 和 .msl,所以我决定进行测试。我知道这些文件是基于 TablePerTypeStrategy.xaml 流生成的,所以我将其删除并尝试构建我的应用程序。它成功了。

当我选择“从模型生成数据库”时,我确实收到一条错误消息,提示 TablePerTypeStrategy.xaml 文件丢失。所以我很困惑,从这个测试中可以清楚地看出,当我尝试生成数据库而不是构建应用程序时正在生成生成。

我在这里想念什么?

4

2 回答 2

19

如果您有兴趣查看 *.csdl、*.ssdl、*.msl 文件,请先构建您的项目一次。现在,在选择您的项目(包含 edmx 文件)后,单击解决方案资源管理器中的“显示所有文件”按钮(显示为红色箭头),如下面的快照所示。

在此处输入图像描述

目录结构表示为obj\x86\Debug\edmxResourcesToEmbed. 所有实体框架特定的 xml 文件都是在构建期间创建的,因为它们可以在obj文件夹中看到并作为资源嵌入。

我的项目中有两个 edmx 文件,EFCoding.edmx因此Model1.edmx您会看到每种类型的文件分别有两组。希望这种观点对某人有所帮助。

注意:所有这些 EF 元信息文件也可以简单地复制到项目输出目录(代替嵌入它们),只需按照此处的建议调整 EF 模型设计器的属性。

于 2016-12-25T05:28:05.530 回答
12

这些文件(.csdl、.ssdl、.msl)在构建时生成,并作为资源嵌入到程序集中,供实体框架类在运行时使用。从模型生成数据库是生成数据库创建脚本的不同过程。

于 2012-05-11T14:21:07.473 回答