无法使用IIS10通过Entity Framework 6读取数据

时间:2018-08-25 09:41:24

标签: asp.net-mvc entity-framework asp.net-mvc-5 entity-framework-6 iis-10

具有Entity Framework 6的Asp.net MVC 5 Web应用已发布并托管在IIS 10上。

发布后,我可以使用内置MVC服务进行登录和注册。但是,通过EF访问数据库表中的数据均返回空结果,并且添加异常不会引发任何异常。

{{1}}

很高兴知道任何安全设置都可以解决。

1 个答案:

答案 0 :(得分:0)

从简单开始,然后使用调试器。

var query = _context.Records.AsQueryable();
var records = query.ToList();
return Json(records, JSonRequestBehavior.AllowGet);

如果您喜欢linq语法:

var query = from r in _context.Records
            select r;

...在var records = query.ToList();上设置一个断点,并验证您是否正在获得结果。如果您获得结果,则问题可能是将IQueryable馈送给Json。如果仍然没有结果,请仔细检查您的连接字符串。

我的建议是避免将实体传递回视图逻辑,它充满了一些问题,这些问题会因延迟加载和处理断开连接的实体以及在往返过程中将实体与DbContext重新关联而产生。我将实体用于域映射,并将视图模型用于视图的数据表示。这样做的好处是避免了上述的延迟加载等问题,而且从有线数据的角度来看,您通常不需要为每个实体发送每个值和子代引用。视图模型反映了视图所需的数据,可以根据需要从域中进行展平。

var viewModels = _context.Records
    .Select(x => new RecordViewModel
    {
        RecordId = x.RecordId,
        //...
    }).ToList();
return Json(viewModels, JSonRequestBehavior.AllowGet);

例如,您可以利用Automapper帮助管理实体和视图模型之间的映射。