Я пытаюсь определить отношение многих ко многим между двумя таблицами, используя сначала код для существующих таблиц.Таблица и класс «Состояние» не могут быть изменены, поэтому я пытаюсь найти способ заставить эти отношения работать в Entity Framework без изменения таблицы или класса.
У меня есть таблица в SQL, которая представленакласс:
[Table("MySchema.Content")]
public class Content
{
public int Id { get; set; }
public string Name { get; set; }
public string Text { get; set; }
public virtual ICollection<State> States { get; set; }
}
У меня есть вторая таблица, представляющая список состояний.(Этот класс и таблица не могут быть изменены). Класс:
[Table("dbo.State")]
public class State
{
public int StateID { get; set; }
public string Name { get; set; }
public string ShortName { get; set; }
}
Я вручную создал объединительную таблицу с именем MySchema.Content_State
, которая содержит ContentID
и StateID
в качестве двух столбцов.
В моем классе контекста данных я хотел бы использовать ModelBuilder
для создания отношения, но не смог выяснить, как заставить его работать.
В контексте я попробовал кое-чтокак это:
modelBuilder.Entity<Content>()
.HasMany<State>(a => a.States)
.WithMany(a => a.Contents)
.Map(a =>
{
a.ToTable("Content_State", "MySchema");
a.MapLeftKey("ContentId");
a.MapRightKey("StateID");
});
Выше не будет компилироваться, жалуясь на строку WithMany.
Как я могу настроить это для работы с моей созданной таблицей соединений?