来自同一模型的多个表

时间:2014-05-30 14:44:21

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

我试图使用几个都遵循相同模型的表,这样最终如果我的应用程序比需要单个数据库更远,那么框架已经奠定了。

  

不支持每种类型的多个对象集。对象集'Entity'和'Reddit'都可以包含'Project.Models.Entity'类型的实例。

我知道这个错误来自我的dbcontect模型的这一部分:

public DbSet<Entity> Entity {get; set;} //local users
public DbSet<Entity> Reddit { get; set; } //users who registered through reddit
public DbSet<Entity> Twitter { get; set; } //user who registered through twitter

我似乎无法找到一种方法来完成这项工作。我知道现有的主题涵盖了为什么这是一个问题,但我似乎找到的唯一解决方案是“做好另一个数据库”虽然看起来很简单,但仍然没有真正解释问题或如何通过代码实际修复它。

(使用实体框架6)

2 个答案:

答案 0 :(得分:0)

这是从问题中提取的。


我找到了解决方案并且它非常简单,我甚至感到惭愧,我甚至不得不问。

为每个表创建一个新的DBcontext 看起来像

RedditDB.cs

public RedditDB() : base("name=Database")
    {

    }
    public DbSet<Entity> Reddit { get; set; }

TwitterDB.cs

public RedditDB() : base("name=Database")
    {

    }
    public DbSet<Entity> Twitter{ get; set; }

并在控制器中放入

RedditDB _RDB = new RedditDB();
TwitterDB _TDB = new TwitterDB();

答案 1 :(得分:0)

使用继承来创建具有与现有实体相同属性的新类。

public class Twitter
{
    public int Id { get; set; }
    public string Title { get; set; }
    public ICollection<EntityC> Lines { get; set; }
}
public class Reddit : Twitter
{
    // leave this empty
}

这比使用单独的数据库上下文更好,因为它更容易查询单个上下文;您可以加入表格等。