我需要使用代码重新生成我的Entity Model。我不想每次有变化的时候都去right click and update model from database。
所以我开始研究EdmGen和EdmGen2
我使用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文件。无法指定命名空间,因此这对我不起作用。
我是否可以使用任何tool或template来完全重新生成我的Entity Model', this includes the.edmxanddesigner.cs`?
发布于 2012-08-24 21:18:37
我得到了EntityStoreSchemaGenerator的源代码,并能够对其进行编码。
您可以添加这些筛选器等来限制您想要的表。还有一个疯狂的复数运算,需要弄清楚什么时候在实体集合的末尾添加/删除一个"S“。对于以Status结尾的单词的情况,它是失败的,尽管单数是Statu (我总是嘲笑它),但我能够告诉它,Status的复数是Status (即使这不是正式正确的),Status的单数是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-24 16:00:29
这将需要您直接与Visual studio交互(在后台运行它,并命令它执行一些操作),因为类的自动生成是由Visual Studio的自定义工具处理的,该工具必须在visual studio中运行。
此外,这种自动生成也是非常有问题的,因为可能会有一些更改需要手动修复才能使EDMX工作。它们也可能是更改,这些更改将以依赖代码不会构建的方式更改您生成的类。
https://stackoverflow.com/questions/12105243
复制相似问题