C# 通过System.Diagnostics.Process生成EF模型

C# 通过System.Diagnostics.Process生成EF模型,c#,.net,entity-framework,code-generation,edmgen,C#,.net,Entity Framework,Code Generation,Edmgen,阅读文章后,我尝试通过System.Diagnostics.Process生成EF模型: Process myProcess = new Process(); var cs = "Data Source=.\\SQLEXPRESS; Initial Catalog=uqs; Integrated Security=SSPI"; myProcess.StartInfo.FileName = @"C:\Windows\Microsoft.NET\Framework\v3.5\EdmG

阅读文章后,我尝试通过System.Diagnostics.Process生成EF模型:

Process myProcess = new Process();
    var cs = "Data Source=.\\SQLEXPRESS; Initial Catalog=uqs; Integrated Security=SSPI";
    myProcess.StartInfo.FileName = @"C:\Windows\Microsoft.NET\Framework\v3.5\EdmGen.exe";
    myProcess.StartInfo.Arguments = "/mode:fullgeneration /c:"+cs+" project:School /entitycontainer:SchoolEntities /namespace:SchoolModel /language:CSharp ";
    myProcess.Start();

但我还没有得到结果,因为我无法处理格式良好的参数字符串。正如我所尝试的,这里有很多引语。如何组织参数字符串?

第1点:我认为连接字符串周围至少需要一些引号:

    myProcess.StartInfo.Arguments = "/mode:fullgeneration \"/c:"+cs+"\" project:School ...";
但是一定要在调试器中检查结果参数字符串,看看是否一切正常


对于第2点,请参见。

您只需在连接字符串周围添加双引号即可

var cs = @"""Data Sour[...]rity=SSPI""";

请注意两端的三个双引号和at.

为什么要在运行时从应用程序调用EdmGen?因为在一个应用程序中,用户可以创建具有任意结构的数据库,我希望用作数据模型实体框架。然后根据模板创建其他类和web界面。EF4是选项吗?如果是这样,您可以先使用代码,这是一个更好的解决方案。@Craig Stuntz:谢谢。我用的是EF4。请提供信息链接,以便熟悉。