私は2つのエンティティを持っています:
public class Tournament
{
[Key]
public Int32 Id { get; set; }
public string Name { get; set; }
public virtual TournamentSite Site { get; set; }
}
public class TournamentSite
{
[Key]
public Int32 Id { get; set;}
public string Name { get; set; }
}
そしてDbContextで:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Tournament>()
.HasRequired<TournamentSite>(t => t.Site)
.WithRequiredDependent()
.Map(p => p.MapKey("IdSite"));
base.OnModelCreating(modelBuilder);
}
つまり、トーナメントをロードすると、適切な Id と Name を持つ TournamentSite が取得されます。問題は、特定のトーナメントの TournamentSite を変更したいということです。私はこのようなことを試しました:
var tournament = dbContext.Tournaments.Find(1); // Get tournament with id 1
tournament.Site.Id = 2;
dbContext.SaveChanges();
Tournament テーブルで IdSite フィールドが 1 ではなく 2 になることを期待していますが、Tournament を TournamentSite にリンクするために使用される IdSite フィールドは常に 1 です。
どんな助けでも大歓迎です、ありがとう。