来自同一模型的多个表

本文关键字:模型 | 更新日期: 2023-09-27 18:06:09

我正在尝试使用几个表,它们都遵循相同的模型,这是为了最终如果我的应用程序扩展到比需要单个数据库更远的地方,框架已经奠定了。

每个类型不支持多个对象集。对象集'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)

来自同一模型的多个表

这是从问题中提取的。


我找到了解决办法,而且很简单,我都不好意思问了。

只是为每个表创建一个新的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();

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

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
}

这比使用单独的DB上下文更好,因为查询单个上下文更容易;您可以连接表等