因此,这是问题的延续hereMVC EF添加对象数据库
我想下面这样:
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; }
DB
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);
问题:
它会添加记录到团队表就好了。它将记录添加到UserTeam表中就好了。问题是它也向用户表添加了新记录,所以我在用户表中重复了用户。此外,当我查询团队表时,我得到一个空List成员,因此EF没有从Many-Many表中正确地获取每个团队的成员。
谢谢你,问题是你说的到底是什么。新列表()不是来自数据库的上下文,因此它正在数据库中创建一个新的User对象。一个简单的选择我的当前用户修复它。谢谢! –
bob