在Web服务器中序列化模型时出错

时间:2013-11-02 16:57:49

标签: asp.net-mvc json entity-framework asp.net-web-api ef-code-first

我遇到了应用程序的麻烦。我有一个MVC应用程序,它查询数据库(和一些web服务)并返回JSON中的信息。在我的本地机器中工作就像一个魅力,但当我上传到网络服务器时,我得到这个错误:

“在'System.Data.Objects.DataClasses.RelationshipManager'上从'_owner'获取值时出错。” (您可以在http://canedroid.com/mvc/api/requests/getlastcheckins

中查看整个错误页面

我尝试使用以下命令禁用代理和延迟加载:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.Configuration.LazyLoadingEnabled = false;
        base.Configuration.ProxyCreationEnabled = false;
    }

没有任何反应。

型号:

namespace CaneDroid.MVCApp.Models
{
public class CaneDroidContext : DbContext,ICaneDroidDataSource
{
    public CaneDroidContext()
        : base("DefaultConnection")
    {

    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.Configuration.LazyLoadingEnabled = false;
        base.Configuration.ProxyCreationEnabled = false;
    }

    public DbSet<Checkin> mdlCheckins { get; set; }
    public DbSet<configAndroid> configAndroid { get; set; }


    IQueryable<Checkin> ICaneDroidDataSource.Checkins
    {
        get { return mdlCheckins; }
    }
}

public class Checkin
{

    public Checkin()
    {
        visto = false;
    }

    [Key,DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public virtual int Id { get; set; }
    [Required]
    public virtual string fsqCheckinId { get; set; }
    public virtual string text { get; set; }
    public virtual string usrId { get; set; }
    public virtual string usrFrstName { get; set; }
    public virtual string usrLstName { get; set; }
    public virtual string venueId { get; set; }
    public virtual string venueName { get; set; }
    public virtual string venueAddress { get; set; }
    public virtual string venueCrossStreet { get; set; }
    public virtual string venueLat { get; set; }
    public virtual string venueLng { get; set; }
    public virtual string venueCity { get; set; }
    public virtual bool visto { get; set; }
}

public class configAndroid
{
    [Key, DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public virtual int Id { get; set; }
    public string key { get; set; }
    public bool value { get; set; }
}

}

控制器中的动作:

public R getLastCheckins()
    {
        var responseJson = R.getLastCheckins(db);
        return responseJson;
    }

public static R getLastCheckins(CaneDroidContext db)
    {
        var cache = db.mdlCheckins.OrderByDescending(q => q.Id).Take(10);
        return new R(cache, null, null, null, null, null);
    }

我不知道还能做些什么。

1 个答案:

答案 0 :(得分:1)

没关系。我找到了解决方案。问题是Context变量。

private static CaneDroidContext db = new CaneDroidContext();

当我修改它并使其静止时,一切都开始正常工作。