我需要使用代码重新生成Entity Model
。每次发生变化时我都不会去right click and update model from database
。
我使用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
。edmx and
designer.cs`吗?
答案 0 :(得分:2)
我获得了EntityStoreSchemaGenerator的源代码,并且能够对其进行编码。
您可以添加这些过滤器等,以限制所需的表格。还有这个疯狂的复数形式的东西,以确定何时从实体集合的末尾添加/删除“S”。对于一个单词以Status结尾的情况没有成功,虽然单数是Statu(我总是嘲笑那个),但我能够告诉它状态的复数是状态(即使这不正式并且状态的单数是状态。
我找到了将所有文件合并到edmx中的类的代码。 http://fusioncrm.googlecode.com/svn-history/r5/trunk/Fusion.Data.Generation/ModelGenerator.cs
我写了一个控制台应用程序,它基于“黄金”数据库为客户端运行所有这些,我也讨厌从设计器运行它,因为它由于某种原因总是略有不同。这种方式似乎总是生成相同的文件,因此在对版本控制签入时更改的更清楚。
答案 1 :(得分:1)
这将要求您直接与Visual Studio交互(在后台运行它并命令它执行某些操作),因为自动生成类由Visual Studio的自定义工具处理,该工具必须在visual studio中运行。
此自动生成也很成问题,因为可能需要手动修复才能使EDMX正常工作。它们也可能是更改,它将以依赖代码不构建的方式更改生成的类。