Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-CSDL、SSDL和MSL文件_C#_Visual Studio 2010_Entity Framework_C# 4.0_Ado.net Entity Data Model - Fatal编程技术网

C# 实体框架-CSDL、SSDL和MSL文件

C# 实体框架-CSDL、SSDL和MSL文件,c#,visual-studio-2010,entity-framework,c#-4.0,ado.net-entity-data-model,C#,Visual Studio 2010,Entity Framework,C# 4.0,Ado.net Entity Data Model,我只是吹毛求疵,但我正在研究Entity Framework如何从EDMX文件生成DLL,我在msdn上看到了这一点: 实体数据模型设计器(实体设计器)在设计时将模型和映射信息存储在.edmx文件中。在生成时,实体设计器使用.edmx文件中的信息创建运行时实体框架所需的.csdl、.ssdl和.msl文件 实际上,我发现奇怪的是,在“构建时”创建了.csdl、.ssdl和.msl,所以我决定进行测试。 我知道这些文件是基于TablePerTypeStrategy.xaml流生成的,所以我删除了它

我只是吹毛求疵,但我正在研究Entity Framework如何从EDMX文件生成DLL,我在msdn上看到了这一点:

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

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

当我选择“从模型生成数据库”时,我确实收到一个错误,说TablePerTypeStrategy.xaml文件丢失了。 因此,我感到困惑,很明显,在这个测试中,生成是在我尝试生成数据库而不是构建应用程序时进行的


这里缺少什么?

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

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

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

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


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

但是,在DDL生成过程中,有一个称为CsdlToSsdlAndMslActivity的步骤,在其描述中它表示“读取CSDL文件并生成连接这两个文件的SSDL和MSL文件。”如果这些文件已经存在,如何生成这些文件?