我正在使用EF4 Code-First进行建模,从事ASP.NET MVC中的项目工作。我有以下的模型类:在EF4代码中创建多对多关系代码优先
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他们收集
- 漫画书可以在众多用户的收藏中
- 每个漫画书都可以有1个或多个作家
- 每个ComicBook可以有1个或多个Pencillers
- 一个ComicBookPerson可以在任何一本书
- 一个ComicBookPerson可以在很多书工作作家或Penciller,作为一个作家,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有可能吗?
工作正常。很简单,谢谢! – 2011-12-19 04:36:01