Linq to sql 对不同表上的LINQ到SQL映射使用相同类型

Linq to sql 对不同表上的LINQ到SQL映射使用相同类型,linq-to-sql,Linq To Sql,我有一个LINQ到SQL的数据上下文,其中存在两个名称不同但结构相同的表。一个表(称为CallRecords)保存实时/当前数据,另一个表(CallRecordsRChive)保存较旧的记录,但字段名与实时记录相同 通过LINQ到SQL的基本映射,可以创建两个类CallRecord和CallRecordsArchive——但既然它们是相同的,我希望尽可能避免这种情况?这样我就不必为每个实例编写两个查询了 我确实考虑创建一个连接视图,但是在两个表中有数百万行,这将是一个性能噩梦。 尝试使用继承来解

我有一个LINQ到SQL的数据上下文,其中存在两个名称不同但结构相同的表。一个表(称为CallRecords)保存实时/当前数据,另一个表(CallRecordsRChive)保存较旧的记录,但字段名与实时记录相同

通过LINQ到SQL的基本映射,可以创建两个类CallRecord和CallRecordsArchive——但既然它们是相同的,我希望尽可能避免这种情况?这样我就不必为每个实例编写两个查询了


我确实考虑创建一个连接视图,但是在两个表中有数百万行,这将是一个性能噩梦。

尝试使用继承来解决这个问题。 查看更多详细信息。


我希望它能对您有所帮助。

我处理这个问题的方法是为这两个表的公共方面创建一个接口,并让从数据上下文生成的两个类通过使用部分类定义来实现该接口。这样,当您想将类型作为一个概念来处理时,您可以始终将其称为接口。

感谢您的提示:第一种情况与我的情况相反(一个表,多个类,我想要多个表,同一个类)。我不能使用映射文件,因为我有DBML,99%的表都是由此生成的。我试图弄清楚是否可以让创建代码的SQLMETAL生成器为这两个表重用CallRecord类型。我想我可能必须将它们编写为返回表的存储过程。如果两个表的数据应该是互斥的,则可以创建索引视图。LINQ to SQL不支持这种形式的继承。使用SQLMetal、designer或手动属性并不重要@jpierson是您需要在LINQtoSQL中使用的选项。注意,使用view选项,任何更新/插入都需要数据库触发器或存储过程,以便DB引擎能够选择正确的表。这对C适用,但不幸的是,我的datacontext在VB.NET中,VB.NET的接口实现不允许这样做,因为您必须将这些方法标记为“Implements[myinterface].[mymethod]“,由于代码是由.NET自动生成的,因此无法使用