【发布时间】:2016-09-01 18:38:29
【问题描述】:
所以这是问题here的延续
我在下面试试这个:
public DbSet<User> Users { get; set; }
public DbSet<Sport> Sports { get; set; }
public DbSet<Team> Teams { get; set; }
- 我可以有很多运动
- 我可以在一项运动中拥有多个团队
- 我可以在一个用户中拥有多个团队
- 我可以在一个团队中拥有多个用户
运动
public int ID { get; set; }
public List<Team> Teams { get; set; }
团队
public Team(int ID, int SportID, int Wins, int Losses, String Name, String Description, double Reputation, List<User> Members, byte[] TeamLogo)
{
this.ID = ID;
this.SportID = SportID;
this.Wins = Wins;
this.Losses = Losses;
this.Name = Name;
this.Description = Description;
this.Reputation = Reputation;
this.Members = Members;
this.TeamLogo = TeamLogo;
}
public int ID { get; set; }
public List<User> Members { get; set; }
public int SportID { get; set; }
用户
public int UserID { get; set; }
public List<Team> Teams { get; set; }
数据库
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Adds middle table between Users and Teams
modelBuilder.Entity<User>()
.HasMany<Team>(t => t.Teams)
.WithMany(m => m.Members)
.Map(w => w.ToTable("UserTeam")
.MapLeftKey("UserID")
.MapRightKey("TeamID"));
}
public void addTeam(Team team, String sport)
{
// Add the team to the correct sport
Teams.Add(team);
this.SaveChanges();
}
控制器
model.NewTeam = new Team(0, db.getSportID(model.SelectedSport), 0, 0, model.TeamName, model.TeamDescription,
100, new List<User>() { model.currentUser }, model.ActualImage);
db.addTeam(model.NewTeam, model.SelectedSport);
问题:
它可以很好地向 Teams 表添加一条记录。它将记录添加到 UserTeam 表中就好了。问题是它也在用户表中添加了一条新记录,所以我的用户表中有重复的用户。此外,当我查询 Teams 表时,我得到一个 null List Members,因此 EF 无法从 Many-Many 表中正确获取每个团队的成员。
【问题讨论】:
标签: c# asp.net-mvc entity-framework asp.net-mvc-3 orm