0

我是一个类实体框架4 edmx由一个asp.net应用程序使用的预生成视图。实体框架4视图生成 - 嵌入文件的问题和如何源代码管理(TFS)

我已用作参考的资源是:

http://blog.willbeattie.net/2010/04/pre-generating-views-in-entity.htmlhttp://msdn.microsoft.com/en-us/library/bb896240.aspx

我遇到的问题涉及源控制,并且还带来了另一个问题有关嵌入的CSDL/MSL/SSDL文件进入组装。上面的文章规定需要将上述资源嵌入到程序集中,方法是将它们包含在项目中并设置要嵌入的文件。

但是,这让我想知道,因为这些文件正在构建和复制后生成,会不会总是包含最后版本的csdl/msl/ssdl文件?由于这些文件是在构建时生成的,并且在项目中标记为嵌入,因此文件嵌入到程序集中似乎是先前在前一版本中生成的。

我的问题的核心是源代码控制。如果每次项目被取消时我都在源代码管理中包含csdl/msl/ssdl文件,它将不会生成,因为这些文件将被标记为只读,并且当生成后期过程试图复制新生成的文件时,Visual Studio将会出错文件覆盖从源代码管理中标记为只读的文件。由于这些文件是构建项目所必需的,但是直到构建项目之后才会生成,所以我目前并未看到如何成功地将csdl/msl/ssdl文件复制到源代码管理中,只保留对它们的引用在那里的项目文件中。这适用于预构建时生成的Views.cs文件,但不适用于在构建后复制的csdl/msl/ssdl文件。

回答

0

程序集是不是总是包含csdl/msl/ssdl文件的最后一个版本?

这取决于您的构建顺序。

如果你只是包含文件并在生成后生成视图,那么是的,你会得到以前的文件。一种修复方法是在更改模式时构建两次,这通常不是很常见。

另一个修复方法是在构建之后使用资源编辑器覆盖存储的文件。

不知道如何解决您的源代码管理;我们使用非锁定源代码控制,这使得这不成问题。

2

我通过我在MSDN上找到的t4模板创建我的* .views.cs。

这可以否定所有的事前/事后构建事件并简化过程。源代码管理也没有问题。 tt文件是完全通用的,只需对其进行重命名即可重新用于任何edmx。

希望它有帮助...