所以繼承人交易我有EntityFramework to Json解決方法?
模型
public class News
{
public News()
{
this.Created = DateTime.Now;
}
public int Id { get; set; }
public string Title { get; set; }
public string Preamble { get; set; }
public string Body { get; set; }
public DateTime Created { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
public int CategoryId { get; set; }
public int ImageId { get; set; }
public virtual Image Image { get; set; }
public virtual Category Category { get; set; }
}
public class Image
{
public int Id { get; set; }
public string Name { get; set; }
public string ImageUrl { get; set; }
public Byte[] ImageData { get; set; }
public string ImageMimeType { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
....以下模型(在序列化類型的對象... DynamicProxies時檢測到循環引用)(這些模型被連接到EfDbContext)連接到以下庫...
接口/存儲庫
public class NewsRepository : INewsRepository
{
EfDbContext context = new EfDbContext();
public IQueryable<News> All
{
get { return context.News; }
}
public IQueryable<News> AllIncluding(params Expression<Func<News, object>>[] includeProperties)
{
IQueryable<News> query = context.News;
foreach (var includeProperty in includeProperties) {
query = query.Include(includeProperty);
}
return query;
}
public News Find(int id)
{
return context.News.Find(id);
}
public void InsertOrUpdate(News news)
{
if (news.Id == default(int)) {
// New entity
context.News.Add(news);
} else {
// Existing entity
context.Entry(news).State = EntityState.Modified;
}
}
public void Delete(int id)
{
var news = context.News.Find(id);
context.News.Remove(news);
}
public void Save()
{
context.SaveChanges();
}
}
public interface INewsRepository
{
IQueryable<News> All { get; }
IQueryable<News> AllIncluding(params Expression<Func<News, object>>[] includeProperties);
News Find(int id);
void InsertOrUpdate(News news);
void Delete(int id);
void Save();
}
在我的HomeController()我有一個JsonResult metod,我想返回上下文。 這裏是方法
JSON請求
[HttpGet]
public JsonResult GetNews()
{
var p = newsRepository.AllIncluding(news => news.Category, news => news.Image);
return Json(p, JsonRequestBehavior.AllowGet);
}
我得到以下錯誤:
而串行化類型「System.Data.Entity.DynamicProxies的目的時檢測到循環引用.News_96C0B16EC4AC46070505EEC7537EF3C68EE6CE5FC3C7D8EBB793B2CF9BD391B3' 。
我猜這事做與惰性加載的東西(IAM目前學習C#)我發現這篇文章這個...
http://hellowebapps.com/2010-09-26/producing-json-from-entity-framework-4-0-generated-classes/
,但我沒有得到它的工作。 ..我能讀懂的代碼是,他們試圖深入搜索槽對象......不僅如此,我無法弄清楚。
我的問題是我如何傳遞lazyLoading對象?成json /序列化程序 還是不存在,我可以如何繼續的任何想法?
謝謝回答!,是我像你一樣解決它,但我想使用動態(lazyloading),得到json的結果,因爲它的unnececary工作重新在控制器中的模型,這就是我認爲...以及我會嘗試如果ScriptIgnore的作品..謝謝! – Martea
@Martea:沒問題。如果您認爲這是您問題的答案,請將其標記爲答案。 – Kamyar