2013-09-27 2 views
0

Нам пришлось отказаться от проекта, который использовал EF5, для EF4 и сражаются за получение хранимой процедуры в EF-модели.Сохраненные процедуры в EF4.4

Процедура возвращает таблицу:

-- A table to hold the results 
    DECLARE @Result TABLE 
    (
     ActionType CHAR(1), 
     ChangedBy  VARCHAR(50), 
     ChangedDate DATETIME, 
     FieldName  VARCHAR(150), 
     OriginalValue VARCHAR(100), 
     NewValue VARCHAR(100), 
     ForeignKeyName VARCHAR(50), 
     ForeignKeyValue VARCHAR(15) 
) 

, а затем добавляет записи, и возвращает:

-- Return the result 
    SELECT * FROM @Result 

Однако добавление процедурный кажется очень разные. Хранимые процедуры не отображаются в нашем контексте Entity Framework.

Так мы следуем пример, показанный здесь: http://msdn.microsoft.com/en-us/library/bb896231.aspx

Однако мы выбираем тип возвращаемого значения, как «комплекс», но когда мы нажмите «Получить Column информацию», мы встретили со следующей ошибкой:

An exception of type “Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException” occurred while attempting to get columns information. The exception message is: ExecuteScalar requires an open and available Connection. The connection’s current state is closed. The inner exception caught was of type ‘System.InvalidOperationException’, with this error message: ‘ExecuteScalar requires an open and available Connection. The connection’s current state is closed.’.

Может кто-нибудь помочь с этой ошибкой или, возможно, объяснить лучший способ ссылки на хранимые процедуры в EF4.4?

ответ

1

Решенный! Не используйте SELECT *!

-- Return the result 
    SELECT  
     ActionType, 
     ChangedBy, 
     ChangedDate, 
     FieldName, 
     OriginalValue, 
     NewValue, 
     ForeignKeyName, 
     ForeignKeyValue 
    FROM @Result 
+1

+1 * не использовать 'SELECT *' * ** всегда ** хороший совет в производственной системе! –

+0

Действительно. Я нарушил правило. Но, надеюсь, моя ошибка поможет другим. – Craig

Смежные вопросы