Sql server 我应该为每个表创建一个ADO.NET实体数据模型,还是为整个数据库创建一个?

Sql server 我应该为每个表创建一个ADO.NET实体数据模型,还是为整个数据库创建一个?,sql-server,entity-framework,ado.net,ado.net-entity-data-model,Sql Server,Entity Framework,Ado.net,Ado.net Entity Data Model,您是否应该为每个表使用一个ADO.NET实体数据模型?或者一个用于您的整个数据库,其中关系也被路由,等等。一个用于您的整个数据库或至少您将使用的表 如果您有大量的表,您可以将它们分解为模式或其他分类方式,但我要说的是,这个想法从来没有针对每个表的数据模型 对整个数据库执行此操作。如果为每个表创建一个数据模型,则无法导航关系 如果您使用的是诸如Subversion之类的签出/合并源代码控制,请注意,设计器会大量使用XML,以至于Subversion难以将其合并。在这种情况下,您通常必须每次重新生成

您是否应该为每个表使用一个ADO.NET实体数据模型?或者一个用于您的整个数据库,其中关系也被路由,等等。

一个用于您的整个数据库或至少您将使用的表


如果您有大量的表,您可以将它们分解为模式或其他分类方式,但我要说的是,这个想法从来没有针对每个表的数据模型

对整个数据库执行此操作。如果为每个表创建一个数据模型,则无法导航关系


如果您使用的是诸如Subversion之类的签出/合并源代码控制,请注意,设计器会大量使用XML,以至于Subversion难以将其合并。在这种情况下,您通常必须每次重新生成整个模型或手动合并。

我认为如果您有大型数据库,则需要对数据库表进行分类。但您必须为每个表创建一个类,这是ado.net实体框架的主要要求

当您更新数据库时,您可以使用更新数据模型


首先设计数据库,然后创建ado.net实体模型

我将独立于数据库模式设计数据的概念/对象模型,然后创建将概念模型与数据库模式最佳关联的映射。它可能会使用大多数表(如果不是所有表的话)。如果您想对表进行一对一映射,则可能需要考虑LINQ to SQL,因为使用起来更容易。

< P>我为相关表使用实体数据模型。根据数据库的大小,如果表少于20或25个,我只会创建一个模型。为每个表创建单独的模型有点贵,因为每个模型都有一个要创建的EntityConnection对象

我发现如果我有5到15张桌子,我可以很好地维护模型。我的主要决定因素是功能。我构建工程应用程序,因此,例如,我有大约6张结构钢组件表。它们都在一个模型中。它们共享公共工程属性,因此更容易重用特定于操作这些属性的代码

这意味着我可以实例化模型,创建对象,在公共代码文件中操作/组织这些对象。任何需要传播回数据库的更改都可以非常高效地完成

底线是确定您对底层对象的需求和使用频率。如果您要不断更新一个或两个表,那么在该模型中有30个其他不相关的表是没有意义的。在这个频繁使用少量表的场景中,创建这些对象的集合、操作集合并在适当的时间更新数据库可能是有意义的


执行内存操作比执行磁盘I/O要便宜得多。这只是我对框架的看法,我绝对不是这方面的专家。

除了上面的答案,请记住EF模型实际上处于概念级别。它不需要与数据库的结构有任何关系,当然也不需要表示整个数据库。

ADO.NET EF不要求为每个表创建一个类。事实上,单个实体可以映射到多个表。