使用Entity Framework映射多个对象

时间:2015-11-01 08:39:38

标签: entity-framework

例如,我们有个人资料和组织。两者都有文章。

    public class Article
    {
        public int Id { get; set; }
        public string Title { get; set; }
    }

    public class Profile
    {
        public int Id { get; set; }
        public string Email { get; set; }
        public virtual ICollection<Article> Articles { get; set; }
    }

    public class Organisation
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual ICollection<Article> Articles { get; set; }
    }

这样,文章应该有两种父类,所以当你直接选择文章时,它应该有类似父类的东西才能访问父类。

    public class Article
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public int ParentId { get; set; }
        public ArticleParentType Parent { get; set; }
    }
  1. 是否可以使用Entity Framework进行映射?
  2. 这样做是个好主意吗?
  3. 存储此类数据的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

public class Article
{
    public int Id { get; set; }
    public string Title { get; set; }
    public int ParentId { get; set; }
    public ArticleParentType Parent { get; set; }
}
     
      
  1. 是否可以使用Entity Framework进行映射?
  2.   
  3. 这样做是个好主意吗?
  4.   

可能是,但不是一个好主意。底层数据库不能使用Parentid的外键。这会很慢。

  
      
  1. 存储此类数据的最佳做法是什么?
  2.   

一个简单的方法,有2个Nullable父项,没有CascadeOnDelete:

public class Article
{
    public int Id { get; set; }
    public string Title { get; set; }

    public virtual Profile Profile { get; set; }
    public virtual Organisation Organisation { get; set; }
}

或者,您可以使用文章的继承,即class OrganisationArticle : Article {}