我正在使用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/

10-08 20:32