表链接两个实体

时间:2012-05-16 21:38:23

标签: asp.net-mvc-3 entity-framework-4

我有两个实体 - UserObj和Producer。

UserObj存储与用户相关的个人资料数据 Producer是一个userobj可以关联的公司。为了关联这两个,我想创建一个允许我从一个实体访问每个实体的数据的实体。

我正试图将两者联系起来 - 但我不太清楚如何做到这一点,我敢打赌它是小事。感谢您的帮助!

ProducerUser

    public class ProducerUser
{
    [ForeignKey("UserObj")]
    public Guid UserObjID { get; set; }
    [ForeignKey("Producer")]
    public int ProducerID { get; set; }

    public virtual UserObj UserObj { get; set; }
    public virtual Producer Producer { get; set; }

}

UserObj

    public class UserObj : Contact
{

    [Key]
    //public override string Email { get; set; }
    public Guid UserObjID { get; set; }
    [Display(Name = "First Name")]
   // [Required]
    public string FirstName { get; set; }
  //  [Required]
    [Display(Name = "Last Name")]
    public string LastName { get; set; }
    public int UserTypeID { get; set; }

    public virtual UserType UserType { get; set; }

    public static UserObj GetUserObj(string GUID, vfContext db)
    {
        Guid guidUser = new Guid(GUID);
        return db.UserObjs.Find(guidUser);
    }

    public string GetFullName()
    {
        return this.FirstName + " " + this.LastName;
    }

}

生产者

    public class Producer : Contact
{
    [Key]
    public int ProducerID { get; set; }
    public string Name { get; set; }
    public string Twitter { get; set; }


    public virtual ICollection<Wine> Wines { get; set; }

}

2 个答案:

答案 0 :(得分:1)

要建立多对多关系,请添加ICollection&lt;&gt;关系的两边。在你的情况下:

到类Producer add

public virtual ICollection<UserObj> UserObjs { get; set; } 

向UserObj类添加

public virtual ICollection<Producer> Producers { get; set; }

之后,您可以删除ProducerUser类的声明。 EF将为您生成它。

答案 1 :(得分:0)

将以下行添加到UserObj和Producer:

类中
public virtual ICollection<ProducerUser> ProducerUsers { get; set; }