LINQ to SQL - частичный класс для выборочного изменения формы

Что у меня есть:

Автоматически созданный класс LINQ to SQL, который соответствует форме его таблицы SQL.

TABLEA
========
column1
column2

Что я хочу делать:

Расширить класс TABLEA, включив в него новое свойство, связанный столбец которого будет присутствовать только при вызове определенной хранимой процедуры. Тип возвращаемого значения хранимой процедуры будет ТАБЛИЦЫ.

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

Что я уже сделал:

Создан частичный класс со свойством и атрибутом столбца, который работает при вызове хранимой процедуры. Когда выполняется прямой вызов таблицы, я получаю исключение недопустимого столбца.

Мой вопрос:

Как мне расширить мой класс данных LINQ to SQL, чтобы заполнить свойство из столбца, который может отсутствовать?


person JazzHands    schedule 06.02.2009    source источник


Ответы (1)


Я не думаю, что это возможно. Смысл LINQ to SQL - обеспечить прямое сопоставление между схемой возвращаемого набора и объектом в .NET. Две разные схемы набора возвращаемых данных, два разных объекта. Вы не можете думать о хранимой процедуре как о возвращении одного и того же объекта, если подпись возврата отличается. Это больше похоже на «ObjectWithAdditionalInfo».

Когда вы начнете делать эти более сложные, неоднозначные сопоставления, вам понадобится настоящий инструмент ORM, например Microsoft Entities или Hibernate.

person Rex M    schedule 06.02.2009
comment
Хорошо сказано, LINQ - это не хрустальный шар, он знает только текущую схему. - person Chris Ballance; 06.02.2009
comment
Спасибо. Хотя есть несколько способов снять шкуру с этой кошки, я одновременно изучаю свои варианты и изучаю LINQ. @Chris - Мне не нужен хрустальный шар; просто не генерировать исключение, когда сопоставленного столбца нет, или, по крайней мере, предоставлять другой способ заполнения моих частичных свойств. - person JazzHands; 06.02.2009