我正在使用razorengine生成一些代码,我认为这很简单,但是我遇到了一个以前无法正常工作的异常。
private FileItem Parse(string template, Model dataitem)
{
_content = Razor.Parse(template, dataitem );
// return current instance for method chaining ...
return this;
}
dataitem
只是一个包含ef实体的对象:{System.Data.Entity.DynamicProxies.Table_600FE9F0407FBF4EABE3C512A1938F3D58ACD5ABD32691FF564D071856338EBB}
模板包含无意义的字符串:
"(Some text)"
但是我得到了这个例外:
无法编译模板。类型或名称空间名称“ DynamicProxies”在名称空间“ System.Data.Entity”中不存在(您是否缺少程序集引用?)。
我已经用nuget安装了ef,所以我假设所有引用都在那里。我已经尝试了ef5和ef6相同的结果。我正在尝试这样做:
string template = "Hello @Model.Name! Welcome to Razor!";
string result = Razor.Parse(template, new { Name = "World" });
最佳答案
简单的答案是关闭延迟加载。它将阻止ef将表数据包装在导致问题的代理对象中。但是,如果您有很多导航属性,它们也会自动停止加载。
在linq语句之后使用ToList()强制执行查询的第二个答案,该语句也删除了代理对象,然后将其作为数据传递到razor中。
关于c# - RazorEngine和EF 5或6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20080608/