Я работаю над проектом в ASP.NET MVC, используя EF4 Code-First для моделирования.У меня есть следующие классы моделей:
public class ComicBook
{
public long ComicBookID { get; set; }
public string IssueTitle { get; set; }
public int IssueNumber { get; set; }
public DateTime PublishDate { get; set; }
public IList<ComicBookPerson> Writers { get; set; }
public IList<ComicBookPerson> Pencillers { get; set; }
public IList<User> CollectingUsers { get; set; }
}
public class ComicBookPerson
{
public long ComicBookPersonID { get; set; }
public string Name { get; set; }
public IList<ComicBook> WorkedOnComicBooks { get; set; }
}
public class User
{
[Key]
public long UserID { get; set; }
public string Email { get; set; }
public IList<ComicBook> CollectedBooks { get; set; }
}
И следующий DbContext:
public class ComicContext : DbContext
{
public DbSet<ComicBook> ComicBooks { get; set; }
public DbSet<ComicBookPerson> ComicBookPerson { get; set; }
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ComicBook>()
.HasMany(b => b.Writers)
.WithMany(w => w.WorkedOnComicBooks)
.Map(t => t.MapLeftKey("ComicBookID")
.MapRightKey("WriterID")
.ToTable("ComicBook_Writers"));
modelBuilder.Entity<ComicBook>()
.HasMany(b => b.Pencillers)
.WithMany(p => p.WorkedOnComicBooks)
.Map(t => t.MapLeftKey("ComicBookID")
.MapRightKey("PencillerID")
.ToTable("ComicBook_Penciller"));
}
}
Правила, которые необходимо применить:
- Пользователи могут иметьмного ComicBooks в их коллекции
- ComicBooks может быть в коллекциях многих пользователей
- В каждом ComicBook может быть 1 или более Writer
- В каждом ComicBook может быть 1 или более Pencillers
- ComicBookPerson может быть Writer или Penciller для любой книги
- ComicBookPerson может работать со многими книгами, как Writer, Penciller или с обоими
Много-для-Много схема между пользователями и ComicBooks создается нормально.Это много-много-много между ComicBooks и ComicBookPersons, которые ломаются.Я получаю сообщение об ошибке:
Schema specified is not valid. Errors:
(15,6) : error 0040: Type ComicBook_Writers is not defined in namespace Comics.Models (Alias=Self).
Мне нужны две таблицы соединения: одна называется ComicBook_Writers, а другая - ComicBookPencillers.Обе таблицы будут содержать ComicBookID и ComicBookPersonID.Возможно ли это в EF Code First?