MVC4 Web Api没有返回实体框架IEnumerable()

时间:2012-10-18 22:08:48

标签: asp.net-mvc vb.net entity-framework asp.net-web-api

我有一个与Entity Framework映射的简单表格如下。我试图返回IEnumerable(Of MyTableObject)的一个非常基本的调用,但是MVC API只是用错误代码500进行轰炸。当我尝试返回一个IEnumerable(Of String)并且只选择一个列时它会做同样的事情。

Entity Framework Model

我尝试使用以下代码返回此模型。

' GET api/chatlog
Public Function GetValues() As IEnumerable(Of ChatLog)
    Using mcEntity As New McEntities

        Return mcEntity.ChatLogs.ToList()
    End Using
End Function

对我来说遗憾的是返回数据。我什么都没得到?

MVC Web API不支持将EF中的对象传递给管道,还是我手动将其序列化为XML?

Fiddler抛出“HTTP / 1.1 500内部服务器错误”

1 个答案:

答案 0 :(得分:0)

一切事,

  1. 您可以通过执行

    在错误消息中启用异常详细信息

    Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

    并共享异常消息和堆栈跟踪?

  2. 关于using语句,通常建议将EFContext放在控制器中,而不是放在操作中。 ApiController是一个IDisposable。您应该重写控制器的Dispose方法并在那里配置您的DBContext。 例如,

    public CustomersContext _db = new CustomersContext();
    
    public IEnumerable<Customer> Get ()
    {
        return _db.Customers;
    }
    
    protected override Dispose(bool disposing)
    {
        base.Dispose(disposing);
    
        if(disposing)
        {
            _db.Dispose();
        }
    }