這是我的用戶模型或類實體框架 - 選擇特定的列
public int UserID { get; set; }
public string UserName { get; set; }
public string UserPassword { get; set; }
public int CompanyID { get; set; }
public int BranchID { get; set; }
public bool RecordState { get; set; }
public virtual Branch Branch { get; set; }
public virtual Company Company { get; set; }
,這是我公司類
public int CompanyID { get; set; }
public string CompanyName { get; set; }
public string CompanyShortName { get; set; }
public string CompanyAddress { get; set; }
public string CompanyPhone { get; set; }
public string CompanyEmail { get; set; }
public string CompanyFax { get; set; }
public bool RecordState { get; set; }
public virtual List<Branch> Branches { get; set; }
public virtual List<Customer> Customers { get; set; }
public virtual List<Market> Markets { get; set; }
public virtual List<Seller> Sellers { get; set; }
public virtual List<User> Users { get; set; }
這是我的[的WebMethod]
public User getUser(int id)
{
User user = db.Users
.Include(c => c.Company)
.Where(i => i.UserID == id)
.FirstOrDefault<User>();
Company company = db.Companies
.Where(i => i.CompanyID == user.CompanyID)
.FirstOrDefault<Company>();
company.Branches = null;
company.Customers = null;
company.Markets = null;
company.Sellers = null;
company.Branches = null;
company.Users = null;
user.Company = company;
return user;
}
我的方法長期以來我想避免循環引用,但我認爲我的步驟不好,它需要很多步驟,我想知道我有任何爲什麼我C使用一個查詢讓公司內部的用戶公司,它也應該返回一個對象類型的用戶,因爲?我真的很抱歉我的英文不好
當我剛剛使用第一行時,我得到了這個錯誤System.InvalidOperationException:生成XML文檔時發生錯誤。 ---> System.InvalidOperationException:在序列化GraduateServer.Models.User類型的對象時檢測到循環引用。 – user3367149
您可能需要在EF環境中關閉延遲加載。正如另一條評論所建議的,EF設計用於延遲加載,這意味着相關實體在訪問時將被檢索。當從Web服務傳遞對象時,您確切知道您需要的相關實體,因此您應該關閉惰性加載並使用「包含調用」明確要檢索的相關記錄。創建你的DbContext後,這樣做:'context.Configuration.LazyLoadingEnabled = FALSE;' – jmcilhinney
最前一頁它的關閉,第二就請寫個簡單的代碼,我想要的是,當我通過ID我想包括企業用戶照顧,但我不想得到公司的所有欄目我想選擇我想要的,對不起我的英文不好 – user3367149