LINQ to SQL - 选择性地改变形状的部分类

时间:2009-02-06 03:46:07

标签: .net linq linq-to-sql

我有什么:

LINQ to SQL自动生成的类,它对应于其SQL表的形状。

TABLEA
========
column1
column2

我想做什么:

扩展TABLEA类以包含一个新属性,只有在调用特定存储过程时才会出现其相关列。存储过程返回类型将为TABLEA。

TABLEA
========
column1
column2
newcolumn3 (always part of the class structure, not always populated)   

到目前为止我做了什么:

使用属性和columnattribute创建一个部分类,该类在调用存储过程时有效。当进行直接表调用时,我得到一个无效的列异常。

我的问题是:

如何扩展LINQ to SQL数据类以从列中填充可能不存在的属性?

1 个答案:

答案 0 :(得分:2)

我认为这是不可能的。 LINQ to SQL的要点是在.NET中提供返回集模式和对象之间的直接映射。两个不同的返回集模式,两个不同的对象。如果返回的签名不同,则无法将存储过程视为返回相同的对象。它更像是“ObjectWithAdditionalInfo”。

当您开始执行这些更复杂,模糊的映射时,您需要一个真正的ORM工具,如Microsoft Entities或Hibernate。