我遇到了应用程序的麻烦。我有一个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);
}
我不知道还能做些什么。
答案 0 :(得分:1)
没关系。我找到了解决方案。问题是Context变量。
private static CaneDroidContext db = new CaneDroidContext();
当我修改它并使其静止时,一切都开始正常工作。