3

我们的数据库有大约 500 个要在 EF 模型中使用的表。其中我很乐意从 50 或更少开始,只是为了在普通的 ADO.net 工作多年后弄湿我们的脚。

问题是,我们的 SQL 服务器包含数以千计的其他表,这些表存在于我们的数据库中,这些表是多年来创建的,还有许多是动态生成的。信不信由你:

select count(*) from INFORMATION_SCHEMA.TABLES
73261

所以有很多表。我发现我尝试设计、构建或模板化 EF 模型或实体的几乎所有工具要么挂起,要么不返回表列表。甚至 VS2012 中的 SQL Server 对象资源管理器也不会列出表,而是在图标上显示带有小“x”的 Tables 文件夹。所以我什至不能选择表的子集。

使用 EF 有哪些选择?是否有模板可以显式定义要使用实体的表?即使有 50 个表,我也不想在一个空的 EDMX 中手动编写每个表。

4

2 回答 2

2

使用数据库/代码优先方法并完全避免将 Visual Studio 连接到数据库(即不要创建 edmx,或连接到服务器资源管理器),您可以轻松地做到这一点。它并没有给你任何模型优先的优势,但我认为听起来你的项目最好使用数据库/代码优先方法,因为:

  1. 您有一个现有的模型,并且不希望将更改从您的 EDMX 推送到数据库
  2. 您希望在数据库的子集上实现此功能

此链接有一个很好的总结(代码优先与模型/数据库优先),但需要注意的是,在您的情况下,数据库/代码优先方法不会让您将更改从代码推送到数据库,因此代码优先下的最后两个项目符号应用较少,而您的是数据库/代码优先混合体。

对于 70k 表,我认为任何 GUI 都会很棘手。当我说数据库/代码优先时,我试图传达您没有使用代码来创建/定义和更新您的数据库。有人可以更简洁/准确地回答这个问题吗?

于 2013-01-15T16:18:03.440 回答
0

我现在这是一个老问题。但对于那些登陆谷歌搜索的人。我发现真正适用于数千张桌子的唯一工具是 The Sharp Factory。

它是一个 ORM。使用起来非常简单。因此,如果您正在寻找可以处理大量表并且不需要您编写“POCOS”或“映射”或 SQL 的 ORM,那么这就是工具。

你可以在这里找到它:夏普工厂

于 2020-04-23T07:22:36.650 回答