2013-11-19 3 views
2

Я использую razorengine для генерации кода. Я думаю, что это прямолинейно, но я получаю исключение, где он работал раньше.RazorEngine и EF 5 или 6

private FileItem Parse(string template, Model dataitem) 
{ 
    _content = Razor.Parse(template, dataitem); 
    // return current instance for method chaining ... 
    return this; 
} 

dataitem просто объект, который содержит эф объект:

{System.Data.Entity.DynamicProxies.Table_600FE9F0407FBF4EABE3C512A1938F3D58ACD5ABD32691FF564D071856338EBB}

Шаблон содержит бессмысленные строку: "(Some text)"

Но я получаю это исключение:

Невозможно скомпилировать шаблон. Тип или имя пространства имен «DynamicProxies» не существует в пространстве имен «System.Data.Entity» (вам не хватает ссылки на сборку?).

Я установил ef с nuget, поэтому я предполагаю, что все ссылки есть. Я пробовал как с ef5, так и с ef6. Я пытаюсь это сделать:

string template = "Hello @Model.Name! Welcome to Razor!"; 
string result = Razor.Parse(template, new { Name = "World" }); 
+0

Что вы на самом деле пытаетесь сделать с этим? – IronMan84

+0

Целевые разные рамки? (v4 vs v4.5) –

+0

Ive попытался настроить разные версии фреймворка тот же результат –

ответ

2

Простой ответ - отключить ленивую загрузку. Это остановит ef от упаковки данных таблицы в прокси-объектах, которые вызывают проблему. Однако, если у вас много навигационных свойств, они автоматически прекратят загрузку.

Второй ответ, чтобы заставить запрос преформировать с помощью ToList() после вашего оператора linq, который также удаляет объекты прокси, а затем передает его в бритву в виде данных.

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