0

我需要重新生成我的Entity Model使用代码。我不想去,right click and update model from database每次都有变化。

所以我开始研究EdmGenEdmGen2

我用来为我EdmGen2预生成我Model Views的:

using (System.Diagnostics.Process process = new System.Diagnostics.Process())
{
    process.StartInfo.FileName = @"C:\EdmGen2.exe";
    process.StartInfo.Arguments = @"/ViewGen cs ""C:\Project\EntityFramework\Model\ApplicationEntityModel.edmx""";
    process.StartInfo.WorkingDirectory = @"C:\Project\EntityFramework\Model";
    process.Start();
    process.WaitForExit();
}

这完美地工作。

不,我正在尝试重新生成我的Entity Model

using (System.Diagnostics.Process process = new System.Diagnostics.Process())
{
    process.StartInfo.FileName = @"C:\EdmGen2.exe";
    process.StartInfo.Arguments = String.Format(@"/ModelGen ""{0}"" ""System.Data.SqlClient"" ""ApplicationEntityModel""", ConnectionString);
    process.StartInfo.WorkingDirectory = @"C:\Project\EntityFramework\Model";
    process.Start();
    process.WaitForExit();
}

这只会生成.edmx文件。无法指定命名空间,所以这对我不起作用。

是否有任何tooltemplate我可以用来完全重新生成我的Entity Model', this includes the.edmx andDesigner.cs`?

4

2 回答 2

2

我获得了 EntityStoreSchemaGenerator 的源代码并且能够对其进行编码。

您可以添加这些过滤器等来限制您想要的表格。还有一个疯狂的复数词可以弄清楚何时从实体集合的末尾添加/删除“S”。对于以 Status 结尾的单词的情况,它失败了,尽管单数是 Statu(我总是对此笑),但我能够告诉它 Status 的复数是 Statuses(即使这不是官方正确的) 并且 Statuses 的单数形式是 Status。

代码在这里: http ://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/30b10ed3-b705-458d-ae1f-19d595bceb39/

我找到了一个类的代码,它将所有文件合并到一个 edmx 中。 http://fusioncrm.googlecode.com/svn-history/r5/trunk/Fusion.Data.Generation/ModelGenerator.cs

我编写了一个控制台应用程序,它为基于“黄金”数据库的客户端运行所有这些,我也讨厌从设计师那里运行它,因为它总是由于某种原因略有不同。这种方式似乎总是生成相同的文件,因此在签入版本控制时更清楚地知道发生了什么变化。

于 2012-08-24T13:18:36.637 回答
1

这将要求您直接与 Visual Studio 交互(在后台运行它并命令它执行某些操作),因为类的自动生成由 Visual Studio 的自定义工具处理,该工具必须在 Visual Studio 中运行。

此外,这种自动生成也存在很大问题,因为可能存在需要手动修复才能使 EDMX 正常工作的更改。它们也可能会以依赖代码不会构建的方式更改您生成的类。

于 2012-08-24T08:00:29.030 回答