Asp.net MVC3,在多个相同的表上使用LINQ to SQL

Asp.net MVC3,在多个相同的表上使用LINQ to SQL,asp.net,linq,linq-to-sql,asp.net-mvc-3,scaffolding,Asp.net,Linq,Linq To Sql,Asp.net Mvc 3,Scaffolding,我使用mvc3和linq 2 SQL成功地从已填充的实时数据库表中检索到数据。该表在DataClasses1.dbml中定义 现在,我必须从其他表中检索数据,这些表具有相同的DataClasses1结构,但来自同一SQL Server DB1.Customers DB2.Customers ecc上的不同数据库,并按数据库名称分组显示它们 1在不创建N DataClassesN.dbml的情况下,如何做到这一点?我想既然它是相同的表结构,我可以避免这样做 2可选:如何也从新创建的数据库的表中自动

我使用mvc3和linq 2 SQL成功地从已填充的实时数据库表中检索到数据。该表在DataClasses1.dbml中定义

现在,我必须从其他表中检索数据,这些表具有相同的DataClasses1结构,但来自同一SQL Server DB1.Customers DB2.Customers ecc上的不同数据库,并按数据库名称分组显示它们

1在不创建N DataClassesN.dbml的情况下,如何做到这一点?我想既然它是相同的表结构,我可以避免这样做

2可选:如何也从新创建的数据库的表中自动检索数据

3不相关:如何定义强类型视图?似乎我可以用EF来做,但我不能用LINQ2SQL来做

我已经考虑过在数据库中创建一个包含所有customers表的视图,但是这个视图似乎太重了

我有一个查询,它返回所有数据库名称selectname from master..syttables,有用吗


提前感谢

创建数据上下文时,只需将不同的连接字符串传递给数据上下文即可。如果数据库完全相同,包括所有外键关系,则只需执行以下操作:

var dc = new DataClasses1(db1connectionstring);
// Do your display of database 1 data
var dc2 = new DataClasses1(db2connectionstring);
// Do your display of database 2 data

我不知道你说的2是什么意思。数据不会自动检索。

在SQL中,显然不能将来自两个数据库的结果联接在一起,因此您可能必须对每个数据库使用两个查询,其中一个查询选择到另一个数据库的新实体中,然后使用LINQ将结果联接到内存中。因此,一个查询返回DB1.EntityName,另一个返回DB2.EntityName,但使用select将其映射到新的DB1.EntityName实体,然后将这两个实体连接起来。这不是一个很好的解决方案,但却是我能想到的最好的解决方案


如果您只希望每个数据库都有一组结果,那么很明显,您可以只返回2个结果集。如果我误解了你的问题,请告诉我。

他想分组、连接和分组数据库中的表。即使我们创建了两个具有不同连接的datacontext对象,也有可能吗strings@MuhammadAdeelZahid——我已经反复阅读了他的问题,我看不出他要求在数据库中加入或分组表的位置。他只是想问一下,对具有相同结构的不同数据库使用相同的数据类。当他说“按数据库名称分组”时,他的意思是他想列出数据库名称,然后显示该数据库中的数据,然后列出另一个数据库名称和该数据库中的数据。我认为@Attila比仅仅2,我假设他的服务器中会有一个未知的数据库集合,并希望他的数据访问层动态地从每个数据库检索数据。确切地说是Kirk Broadhurst,你知道我该怎么做吗?事实上,是的。您可以在SQL中执行跨数据库查询,将来自每个数据库的表或结果连接到单个查询中。但在EF或L2S中做这件事是另一回事。我的意思是从EF的角度来看。谢谢你的澄清。从EF这将需要2个上下文连接,之后必须合并结果。您应该重新考虑您的数据库设计。如果此数据由单个应用程序使用,并且结构一致,并且您希望将其作为单个数据类型使用,那么它应该全部存在于一个数据库的一个表中。如有必要,添加一列以确定它所属的“子集”。@Kirk Broadhurst-有很多理由不想这样做。例如,我开发了一个应用程序,其中有多个客户,每个客户离开时都需要能够携带数据,因此这就需要让每个客户使用自己的数据库。从程序员的角度看最好的并不总是从商业角度看最好的。@Mystere-Man-在我看来,获取他们自己的数据并不足以提供他们自己的数据库。有200个客户需要200个数据库?那是无法维持的。