2013-05-22 4 views
0

Первоначально я думал, что эта ошибка была специфичной для Entity Framework. Но теперь подумайте, что это имеет какое-то отношение к EFContextProvider от BreezeJS.Breeze.WebAPI.EFContextProvider «В этом контексте поддерживаются только примитивные типы или типы перечислений»

У меня есть запрос Linq, который прекрасно работает как в Framework Entity и Linq к SQL:

var dc = new EFContextProvider<MyEntities>(); 
var query = 
    (from t1 in dc.Context.Table1 
    where (from t2 in dc.Context.Table2 select t2.TypeID).Distinct().Contains(t1.TypeID) 
    select t1); 

О выполнении этого запроса, я получаю сообщение об ошибке: Невозможно создать постоянное значение типа "Table2"

Но, если я выполнить запрос непосредственно с Entity Framework:

var dc = new MyEntities(); 
var query = 
    (from t1 in dc.Table1 
    where (from t2 in dc.Table2 select t2.TypeID).Contains(t1.TypeID) 
    select t1); 

запрос успешно.

Любая помощь будет оценена :)

+0

Спасибо Ник, Мы были в состоянии воспроизвести проблемы и расследуют. – sbelini

ответ

1

После воспроизведения и изучения этого вопроса, мы обнаружили, что ошибка происходит в EF, и мы не можем это исправить. Тем не менее, мы обнаружили, что такое поведение связано с «точечно» путь в запросе

dc.Context.Table2 

и обходной путь, чтобы просто избежать такой:

var dc = new EFContextProvider<MyEntities>(); 
var dc1 = dc_breeze.Context; 

var query = 
    (from t1 in dc.Context.Table1 
    where (from t2 in dc1.Table2 select t2.TypeID).Distinct().Contains(t1.TypeID) 
    select t1); 
+0

Отлично. Спасибо за ответ. – Nick

+0

Просто чтобы добавить что-то - у меня была та же проблема, и вышеприведенный ответ содержит опечатку. 'var dc1 = dc_breeze.Context;' должен быть 'var dc1 = dc.breeze.Context;' – TheMook

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

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