需要生成EDMX文件并编译

Bep*_*nds 5 c# code-generation compilation dynamic edmx

对于这里的高级用户来说,我的问题可能有点不同或基本。

我有一个可由管理员自定义的网络应用程序。这意味着,管理员可以添加新的表架构或编辑表列、添加新的表列等。这些更改将映射到更改后发布的逻辑对象(与 EDMX 非常相似)。在发布时,我们会生成带有必要更改的存储过程。

从 UI 中,我们使用这些逻辑对象来连接 DB(使用 COM 来理解映射并执行适当的存储过程和视图等)。现在我正在考虑使用 EF 来替换我们当前拥有的逻辑对象模型。我可以动态创建 EDMX 文件(csdl、msl、ssdl、cs 文件),但我不确定如何编译它们并将类动态打包到 DLL 中。这意味着,当我单击按钮时,将创建所有 edmx 相关文件,并且必须基于 CS 文件创建 DLL,并且网站必须能够访问代码中的新更改。

你能帮我如何自动动态编译cs文件吗?我不会在客户端拥有其他文件(如 default.aspx 等)的源代码。

谢谢艾伯特

Ton*_*nyG 2

Bepenfriends - 不要从 shell 尝试 CSC,请考虑使用 CSharpCodeProvider.CompileAssemblyFromFile。

需要注意的一件事是:如果编译代码然后尝试再次编译它,则可能会锁定所创建的程序集。为此,我创建了一个 AsyncCompiler,它创建一个新的 AppDomain,在其中进行编译,然后卸载 AppDomain。

这是一些非常繁琐的代码,但我正在这样做(生成 AEF XML 文件,从它们生成代码,然后将所有内容编译到程序集中)并且效果很好。我唯一不太正确的是动态导入存储过程 - 我的 SSDL 有它们,但没有 CSDL 或 MSL。对解决方案的搜索引导我来到这里。

我希望这里的关键词足以让您朝着正确的方向前进。