我们有一个很大的(而且还在增长!)数据库。我们尽量不需要手动构建模型,我们找到了这个EdmGen2,它应该为我们构建EDMX实体模型。
因为我们有这么大的数据库,所以我们不希望所有的表都在同一个模型中。我们让它们都正常工作,但是生成的模型包含了我们所有的表。
EntityStoreSchemaGenerator中有一个表的只读列表。它(实际上)是我们所有的表。
这个工具会生成一个比我们的完整数据库更小的模型吗?我们是否可以选择要放置它的表,并且只使用这些表?
发布于 2009-10-07 22:39:18
EdmGen2代码附带了一个名为/RetrofitModel的选项。这种模式的关键点是运行一些数据挖掘算法,以查看数据库实例中是否存在明显的类似继承的关系,如果存在,则生成包含这些继承的EDMX。
但是,/RetrofitModel选项的另一个特性是它允许用户选择表。例如,如果有AdventureWorks示例数据库,则可以发出以下语句:
EdmGen2 /RetrofitModel "Server=(local);Integrated Security=true;Initial Catalog=AdventureWorks;" "System.Data.SqlClient" "AVWorks"它将调出数据库中的表的列表,在这一点上,您可以检查您希望在模型中包含哪些表。
发布于 2009-10-12 21:24:50
tupleFraction参数有助于定义“重要”子类的含义。数据挖掘规则是启发式的,因此它们可能会发现常识可能不一致的模式。
tupleFraction参数说明了这一点(对于某些规则):如果EdmGen++认为它找到了一个子类,但新的子类的实例少于其父类的tupleFraction,那么就认为这个新的子类“不重要”,不要创建它。这个参数是可选的-如果你不指定它,我认为它会被设置为0.05 (5%)。
当前版本仅支持通过UI进行表规范。但是,从文件或其他源中提取表的列表是一个简单的添加-我将在下一个版本中将其添加到待办事项列表的顶部。
更新:我们已经更新了code.msdn.microsoft.com/edmgen2上的代码,允许在没有图形用户界面的情况下指定表。在以前的版本中,RetrofitModel选项将弹出一个对话框,允许用户选择要包含在模型中的表。ConceptualEdmGen dll现在有两个额外的公共方法,它们可以设置表列表而无需打开对话框-一个从文件中提取表列表,另一个将表列表作为字符串列表直接提供给该方法。
出现在包中的dll代码使用“from EdmGen2”选项,它在当前目录中查找名为“Tables.txt”的文件,如果找到,则将其内容提供给dll以设置表列表。例如,如果以下是文件“Tables.txt”的内容:
HumanResources.Department
HumanResources.Employee
HumanResources.EmployeeAddress
HumanResources.EmployeeDepartmentHistory
HumanResources.JobCandidate
HumanResources.Shift对于RetrofitModel选项,EdmGen2将为AdventureWorks的HumanResources模式中的所有表生成一个模型。对于这两种方法,空列表将导致数据库中的所有表都被添加到模型中。如果这两个表选择方法都未调用,则仍会显示表选择界面。
发布于 2009-10-07 19:54:31
我刚刚给负责EdmGen2的人发了一封电子邮件,让我们看看他带来了什么
亚历克斯·詹姆斯
微软实体框架团队项目经理。
https://stackoverflow.com/questions/1533660
复制相似问题