1
循環引用錯誤我得到一個錯誤如下:獲得在實體框架
'Object graph for type 'System.Collections.Generic.HashSet`1[[ERP_Lite_Data.
MenuItem, ERP_Lite_Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'
contains cycles and cannot be serialized if reference tracking is disabled.
我有我的數據庫中的表叫的MenuItems。在的MenuItems的字段和關係被顯示在下面的圖片:
用於通過實體框架生成該表中的類如下:
public partial class MenuItem
{
public MenuItem()
{
this.MenuItems1 = new HashSet<MenuItem>();
}
public int MenuItemID { get; set; }
public string Title { get; set; }
public Nullable<int> ParentID { get; set; }
public virtual ICollection<MenuItem> MenuItems1 { get; set; }
public virtual MenuItem MenuItem1 { get; set; }
}
我搜索互聯網上的上述錯誤並且在任何地方我都可以獲得將DataMember屬性應用於類成員的相同解決方案。因此,我已經完成了這一任務。這是修改過的MenuItem.cs。
[DataContract]
public partial class MenuItem
{
public MenuItem()
{
this.MenuItems1 = new HashSet<MenuItem>();
}
[DataMember, Key]
public int MenuItemID { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public Nullable<int> ParentID { get; set; }
[DataMember]
public virtual ICollection<MenuItem> MenuItems1 { get; set; }
[DataMember]
public virtual MenuItem MenuItem1 { get; set; }
}
但是我仍然得到同樣的錯誤。任何人都可以提出一些解決方法嗎?
更新:
如果我用下面的方法來返回所有的菜單項正常工作:
public IEnumerable<MenuItem> GetAllMenuItems()
{
using (Entities db = new Entities())
{
return (from m in db.MenuItems
select m).ToList();
}
}
我將其更改爲類似的時刻:
public IEnumerable<MenuItem> GetAllMenuItems()
{
using (Entities db = new Entities())
{
return (from m in db.MenuItems
select new MenuItem
{
MenuItemID = m.MenuItemID,
Title = m.Title,
ParentID = m.ParentID
}).ToList();
}
}
我得到另一個錯誤:
The entity or complex type 'Models.MenuItem' cannot be constructed in a LINQ to Entities query.
你可能會問我寫的代碼象下面這樣:
return (from m in db.MenuItems
select new
{
MenuItemID = m.MenuItemID,
Title = m.Title,
ParentID = m.ParentID
}).ToList();
那麼什麼應該是我的方法的返回類型?
我是實體框架的新手,你能解釋一下數據傳輸類型是什麼意思嗎? – Vishal
我修改了我的回覆。 –
好吧,不同投影的含義是我不應該使用全選(*),而應該使用列名選擇即使我想選擇所有列? – Vishal