0

我在使用应用程序时遇到问题。我有一个 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);
    }

我不知道我还能做什么。

4

1 回答 1

1

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

private static CaneDroidContext db = new CaneDroidContext();

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

于 2013-11-03T06:43:44.307 回答