实体框架一对多关系,迁移

时间:2015-07-08 16:47:10

标签: c# asp.net-mvc entity-framework

您好我有以下实体:

public class EntityOne
{

    public int EntityOneID  { get; set; }

    public string Smth { get; set; }

    public string User1Id { get; set; }
    public string User2Id { get; set; }

    public virtual ApplicationUser User1 { get; set; }
    public virtual ApplicationUser User2 { get; set; }


}

public class ApplicationUser : IdentityUser
{
    public virtual ICollection<EntityOne> EntityOnes { get; set; }
}

我配置了关系

modelBuilder.Entity<EntityOne>()
    .HasRequired<ApplicationUser>(s => s.User1)
    .WithMany(s => s.EntityOnes)
    .HasForeignKey(s => s.User1Id).WillCascadeOnDelete(false);

modelBuilder.Entity<EntityOne>()
    .HasRequired<ApplicationUser>(s => s.User2)
    .WithMany(s => s.EntityOnes)
    .HasForeignKey(s => s.User2Id).WillCascadeOnDelete(false);

当我从我的实体中删除ApplcationUser之一时,一切正常,但如果我有2个应用程序用户,则会出现以下错误:

Schema specified is not valid. Errors: The relationship    'SomeProject.Models.EntityOne_User1' was not loaded because the type 'SomeProject.Models.ApplicationUser' is not available.

我希望2个不同的用户与&#34; EntityOne&#34;

有关系

编辑:可以回答:

public class ApplicationUser : IdentityUser
{
    public virtual ICollection<EntityOne> EntityOnes1 { get; set; }
    public virtual ICollection<EntityOne> EntityOnes2 { get; set; }
}

当我在ApplicationUser中创建2个集合时,一切正常。

1 个答案:

答案 0 :(得分:0)

您不能拥有与同一财产相关联的两种不同关系。

  

导航属性提供了一种导航两种实体类型之间关联的方法。每个对象都可以为其参与的每个关系都有一个导航属性。

https://msdn.microsoft.com/en-us/data/jj713564.aspx