簡體   English   中英

實體框架代碼優先多對多不使用 GUID 加載相關實體

[英]Entity Framework Code First Many-To-Many not loading related entities using GUID

我在用戶和經理之間有一個自我引用的多對多關系,如下所示:

 public class User
    {
        public virtual Guid UserId { get; set; }
        public virtual string Username { get; set; }    
        public virtual ICollection<UsersManagers> Managers { get; set; }
    }

public class UsersManagers
{
    public int UsersManagersId { get; set; }
    public virtual Guid ManagerId { get; set; }
    public virtual Guid UserId { get; set; }
    public int ManagerRank { get; set; }

    [ForeignKey("ManagerId")]
    public virtual User Manager { get; set; }
}

因此,用戶可以擁有多個可以按等級排序的經理。 當我為我的數據庫和具有幾個經理的用戶播種時,如下所示:

        var user = u.All.Where(e => e.Username == "Neil").FirstOrDefault(); 

        UsersManagers c = new UsersManagers {ManagerRank = 1, ManagerId = manager1.UserId, UserId = user.UserId};
        UsersManagers c1 = new UsersManagers { ManagerRank = 2, ManagerId = manager2.UserId, UserId = user.UserId };

一切都在數據庫中正確創建。 UsersManagers 表中有 3 個條目具有正確的 UserId、ManagerId 和 ManagerRank。

當我從存儲庫加載用戶並嘗試訪問Managers屬性時,該集合為空。 我能做些什么來解決這個問題?

任何幫助,將不勝感激。

更新:

我在加載用戶時添加了包括經理,如下所示。 EF 現在為錯誤的用戶返回錯誤的管理器。 這是來自 UsersManagers 表的數據,它應該為 1 個用戶返回 4 個經理,但它為 4 個用戶返回 1 個經理。

UsersManagersId        ManagerId            UserId                       ManagerRank
1   2157B648-7FE3-4784-A742-687682672EE8    F603EB04-FF22-4E8E-8FB2-3AA12F3F6C8F    1
2   862C2E56-8DF2-4110-B6E4-534B8C0E8F75    F603EB04-FF22-4E8E-8FB2-3AA12F3F6C8F    2
3   A95AD9A2-6475-4B4C-925A-6C0522E9B004    F603EB04-FF22-4E8E-8FB2-3AA12F3F6C8F    3
4   A6D37381-2507-46E8-B84D-059A1B4F1020    F603EB04-FF22-4E8E-8FB2-3AA12F3F6C8F    4

解決方案

解決方案是更改 UsersManagers 中 Manager 的 ForeignKey 注釋以使用“UserID”。

這是一個示例代碼位,它為我的存儲庫中的程序加載所有會話和相關跟蹤。

public Program GetById(int id)
{
    var entity = _context.Programs
        .Include(p => p.Sessions.Select(s => s.Trackings))
        .Single(p => p.ID == id);

     return entity;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM