我正在为具有由asp.net应用程序使用的Entity Framework 4 edmx的类项目预生成视图。
我用作参考的资源是:
http://blog.willbeattie.net/2010/04/pre-generating-views-in-entity.html 和 http://msdn.microsoft.com/en-us/library/bb896240.aspx
我遇到的问题与源代码控制有关,并提出了另一个关于将csdl / msl / ssdl文件嵌入到程序集中的问题。上面的文章规定需要将上述资源嵌入到程序集中,方法是将它们包含在项目中并设置要嵌入的文件。
但这让我想知道,因为这些文件是在构建时生成并在之后复制的,所以程序集总是不包含csdl / msl / ssdl文件的 last 版本?因为这些文件是在构建时生成的并且在要嵌入的项目中标记,所以看起来嵌入到程序集中的文件是先前在之前构建中生成的文件。
我的问题的核心是源控制。如果我在每次项目被删除时都在源代码管理中包含csdl / msl / ssdl文件,那么它将不会构建,因为这些文件将被标记为只读,并且当构建过程尝试复制时,Visual Studio将会出错从源控件中删除的文件上新生成的文件,这些文件被标记为只读。由于这些文件是构建项目所必需的,但是在项目构建之后才生成,我目前还没有看到如何成功地不将csdl / msl / ssdl文件检查到源代码控制中,只保留引用他们在那里的项目文件中。这适用于在构建时生成的Views.cs文件,但不适用于在后期构建时复制的csdl / msl / ssdl文件。
答案 0 :(得分:2)
我通过MSDN上找到的t4模板创建了我的* .views.cs。
这会消除所有前/后构建事件并简化过程。源控制也没有问题。 tt文件是完全通用的,只需重命名就可以重用于任何edmx。
希望它有所帮助...
答案 1 :(得分:0)
组件是否总是包含csdl / msl / ssdl文件的最后一个版本?
这取决于您的构建顺序。
如果您只是在构建后包含文件并生成视图,那么是的,您将获得以前的文件。一种解决方法是在更改架构时构建两次,这通常不常见。
另一种解决方法是使用资源编辑器在构建后覆盖存储的文件。
不确定如何修复源代码管理;我们使用非锁定源控件,这使得这不是问题。