Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 首先在EF4代码中创建多对多关系_Asp.net Mvc 3_Entity Framework 4_Ef Code First - Fatal编程技术网

Asp.net mvc 3 首先在EF4代码中创建多对多关系

Asp.net mvc 3 首先在EF4代码中创建多对多关系,asp.net-mvc-3,entity-framework-4,ef-code-first,Asp.net Mvc 3,Entity Framework 4,Ef Code First,我正在ASP.NETMVC中进行一个项目,首先使用EF4代码进行建模。我有以下模型类: public class ComicBook { public long ComicBookID { get; set; } public string IssueTitle { get; set; } public int IssueNumber { get; set; } public DateTime PublishDate { get; set; } publ

我正在ASP.NETMVC中进行一个项目,首先使用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; }
}

我基本上需要两个连接表,一个叫做ComicBook_Writers,另一个叫做ComicBookPenciller。两个表都将包含一个ComicBookKid和一个ComicBookPersonID。这在EF Code First中可能吗?

ComicBookPerson类中需要两个与书写者和铅笔匠相关的集合属性

public class ComicBookPerson
{
    public long ComicBookPersonID { get; set; }
    public string Name { get; set; }

    public IList<ComicBook> WroteComicBooks { get; set; }
    public IList<ComicBook> PenciledComicBooks { get; set; }
}
公共类ComicBookPerson
{
公共长ComicBookPersonID{get;set;}
公共字符串名称{get;set;}
公共IList WroteComicBooks{get;set;}
公共IList铅笔簿{get;set;}
}
模型映射为

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ComicBook>()
        .HasMany(b => b.Writers)
        .WithMany(w => w.WroteComicBooks)
        .Map(t => t.MapLeftKey("ComicBookID")
            .MapRightKey("WriterID")
            .ToTable("ComicBook_Writers"));

    modelBuilder.Entity<ComicBook>()
        .HasMany(b => b.Pencillers)
        .WithMany(p => p.PenciledComicBooks)
        .Map(t => t.MapLeftKey("ComicBookID")
            .MapRightKey("PencillerID")
            .ToTable("ComicBook_Penciller"));
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasMany(b=>b.Writers)
.有许多(w=>w.WroteComicBooks)
.Map(t=>t.MapLeftKey(“ComicBookID”)
.MapRightKey(“WriterID”)
.ToTable(“漫画书作者”);
modelBuilder.Entity()
.HasMany(b=>b.Pencillers)
.有许多(p=>p.铅笔本)
.Map(t=>t.MapLeftKey(“ComicBookID”)
.MapRightKey(“PencillerID”)
.ToTable(“ComicBook_Penciller”);
}

我认为这个模型很接近正确,但仍然缺少一些东西。
ComicBookPerson
既可以是作家也可以是铅笔匠,这意味着您仍然需要在您的类中列出第三个列表
ComicBookPerson

public IList<ComicBook> WroteComicBooks { get; set; }
public IList<ComicBook> PenciledComicBooks { get; set; }
public IList<ComicBook> WrotPencComicBooks { get; set; }
public IList WroteComicBooks{get;set;}
公共IList铅笔簿{get;set;}
公共IList WrotPencComicBooks{get;set;}

我是对的吗?

我认为这个模型很接近正确,但仍然缺少一些东西,关于COMICBOOKPERSON,它也可以是(作家和铅笔匠),这意味着你仍然需要在你的类COMICBOOKPERSON中列出第三个列表:public-IList-WroteComicBooks{get;set;}public-IList-PenciledComicBooks{get;set;}公共IList wrotpenncomicBooks{get;set;}我说得对吗?请不要用大写字母锁写所有东西。我不需要使用第三个集合。如果一个
ComicBookPerson
既是一本
ComicBook
上的作家又是一名铅笔匠,那么该
ComicBook
将简单地包含在
WroteComicBooks
PencilledComicBooks
两本收藏中。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ComicBook>()
        .HasMany(b => b.Writers)
        .WithMany(w => w.WroteComicBooks)
        .Map(t => t.MapLeftKey("ComicBookID")
            .MapRightKey("WriterID")
            .ToTable("ComicBook_Writers"));

    modelBuilder.Entity<ComicBook>()
        .HasMany(b => b.Pencillers)
        .WithMany(p => p.PenciledComicBooks)
        .Map(t => t.MapLeftKey("ComicBookID")
            .MapRightKey("PencillerID")
            .ToTable("ComicBook_Penciller"));
}
public IList<ComicBook> WroteComicBooks { get; set; }
public IList<ComicBook> PenciledComicBooks { get; set; }
public IList<ComicBook> WrotPencComicBooks { get; set; }