Считыватель данных несовместим с указанной Entity Framework
У меня есть метод, который будет возвращать минимальные результаты из sproc, чтобы заполнить меню выбора. Когда я хочу получить минимальные результаты, я передаю bool getMin = true для sproc, а когда мне нужна полная запись, я передаю bool getMin = false.
Это вызывает ошибку Entity FrameWork "Считыватель данных несовместим с указанным
Наиболее значимая часть ошибки {"
Сообщение":"Произошла ошибка.","ExceptionMessage ":"Считыватель данных несовместим с указаннымCatalogModel.proc_GetFramingSystems_Result», Член типа "FrameType», не имеет соответствующего столбца в считывателе данных с таким же именем. ","ExceptionType ":"System.Data.EntityCommandExecutionException»,
Очевидно, что ошибка говорит мне, что, когда читатель данных пытался установить свойство 'FrameType» это не было в результатах запроса.
Теперь я понимаю ошибку, что я хочу знать, так это то, что я собираюсь разделить этот SQL-фрагмент на два пакета или есть способ обойти это?
Моя функция ниже
public static IEnumerable GetFramingSystems(int brandID, string frameType, string glazeMethod, bool getMin)
{
using (CatalogEntities db = new CatalogEntities())
{
return db.proc_GetFramingSystems(brandID, frameType, glazeMethod, getMin).ToList();
};
}
Мой TSQL ниже
ALTER proc [Catelog].[proc_GetFramingSystems]
@BrandID INT,
@FrameType VARCHAR(26),
@GlazeMethod VARCHAR(7) ='Inside',
@getMin BIT = 0
as
BEGIN
SET NOCOUNT ON;
IF @getMin =0
BEGIN
SELECT c.ID,c.Name,c.Descr,c.FrameType,c.isSubFrame,
c.GlassThickness,c.GlassPosition,c.GlazingMethod,c.SillProfile
from Catelog.Component c
WHERE c.MyType ='Frame'
AND c.FrameType = @FrameType
AND c.GlazingMethod = @GlazeMethod
AND c.ID IN(
SELECT cp.ComponentID FROM Catelog.Part p JOIN
Catelog.ComponentPart cp ON p.ID = cp.PartID
WHERE p.BrandID = @BrandID
)
ORDER BY c.Name
END
ELSE
SELECT c.ID,c.Name,c.Descr
from Catelog.Component c
WHERE c.MyType ='Frame'
AND c.FrameType = @FrameType
AND c.GlazingMethod = @GlazeMethod
AND c.ID IN(
SELECT cp.ComponentID FROM Catelog.Part p JOIN
Catelog.ComponentPart cp ON p.ID = cp.PartID
WHERE p.BrandID = @BrandID
)
ORDER BY c.Name
SET NOCOUNT OFF;
END;