У меня есть отношение «Много ко многим» с некоторыми дополнительными полями. Но поскольку есть фотографии, добавленные ко многим отношениям, которые могут относиться к другим отношениям, я хотел отделить его, чтобы я мог изменить его, просто изменив отношение «Один ко многим». Это модельДобавить соединение «один ко многим» для многих-ко-многим
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