多少の追加フィールドと多対多の関係があります。しかし、他の関係に適用される可能性のある多対多の関係にPhotosが追加されたので、私はそれを分離したいので、One to manyの関係を変更するだけでそれを変更できます。これは、モデル多対多に1対多の接続を追加する
public class Segment
{
public int SegmentId { get; set; }
public int ConnectionPointIdEnd { get; set; }
public string ConnectionName { get; set; }
public string ConnectionInformation { get; set; }
public string Image { get; set; }
public string Direction { get; set; }
public ICollection<ConnectionPointRoute> ConnectionPointRoutes { get; set; }
}
public class ConnectionPointRoute
{
public int ConnectionPointId { get; set; }
public int RouteId { get; set; }
public int SegmentId { get; set; }
public int Position { get; set; }
public ConnectionPoint ConnectionPoint { get; set; }
public Route Route { get; set; }
public Segment Segment { get; set; }
}
され、ModelBuilderのは、次のようになります
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ConnectionPointRoute>()
.HasKey(c => new { c.ConnectionPointId, c.RouteId, c.SegmentId });
modelBuilder.Entity<ConnectionPoint>()
.HasMany(c => c.ConnectionPointRoutes)
.WithRequired(x => x.ConnectionPoint)
.HasForeignKey(c => c.ConnectionPointId);
modelBuilder.Entity<Route>()
.HasMany(c => c.ConnectionPointRoutes)
.WithRequired(x => x.Route)
.HasForeignKey(c => c.RouteId);
modelBuilder.Entity<Segment>()
.HasMany(c => c.ConnectionPointRoutes)
.WithRequired(x => x.Segment)
.HasForeignKey(c => c.SegmentId);
}
そして、これはすべてのアイテムを取得するためにうまく動作しますが、何らかの理由で、それは私が新しいルートを投稿することができません。たとえば、エラーが表示されます。
"Multiplicity constraint violated. The role 'Segment_ConnectionPointRoutes_Source' of the relationship 'InBuildingNavigator.Data.Models.Segment_ConnectionPointRoutes' has multiplicity 1 or 0..1."
データを詳細に制御したいので、明示的な読み込みを使用することを選択しました。私は本当にあなたの最初の提案に従うことができないと言う必要があります、説明するために気を付けろ? –
それは私の経験からです。たとえば、私は友人の関係を持っていた - 古典的な多対多の関係。この関係にはfriendStatus(友情が認められている)という別のプロパティがあります。すべての認知された友人を取得したいとき、これはasp.netのアイデンティティを扱うときに難しい傾向がありました。私が誤解しないで、多対多の作業を自動的に実行する方法は、経験したことがありますが、あとでカスタマイズするのが難しくなる傾向があります。 – Nils