
public class Roster{ public Roster() { Players = new List<Player>(); } public int RosterID { get; set; } [MaxLength(100)] [required] public string Rostername { get; set; } public ICollection<Player> Players { get; set; }}public class Player{ public int PlayerID { get; set; } [MaxLength(100)] [required] public string Playername { get; set; } public virtual ICollection<Roster> Rosters { get; set; }} 我使用流畅的API定义了这种关系
// many to many Roster - PlayersmodelBuilder.Entity<Roster>().HasMany(t => t.Players).WithMany(t=>t.Rosters).Map(m =>{ m.Totable("RosterPlayers"); m.MapleftKey("RosterID"); m.MapRightKey("PlayerID");}); 我可以将球员保存到这样的名单中
var roster = rosterRepository.GetByID(rosterID);var player = playerRepository.GetByID(playerID);roster.Players.Add(player);rosterRepository.Update(roster);...
但是,当我检索名单时,不会加载球员集合.我验证了数据是否存在所有正确的值,以下sql确实提供了数据.
SELECT * from Rosters r INNER JOIN RosterPlayers rp on r.RosterID = rp.RosterIDINNER JOIN Players p ON p.PlayerID = rp.PlayerID
我错过了什么?
解决方法 将Players属性设置为虚拟,以便EF可以延迟加载集合.public class Roster{ //........... public virtual ICollection<Player> Players { get; set; }} 或者,您可以加载Players集合.
var rosters = db.Rosters.Include(r => r.Players).ToList();总结
以上是内存溢出为你收集整理的c# – 具有多对多未加载集合属性的实体全部内容,希望文章能够帮你解决c# – 具有多对多未加载集合属性的实体所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)