首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF多模式CodeFirst

EF多模式CodeFirst
EN

Stack Overflow用户
提问于 2013-12-02 03:59:54
回答 1查看 852关注 0票数 0

如何使用codefirst方法在EF中创建多个模式的表。

我有这个上下文,但似乎只创建了Schema.Legion。

任何帮助都将不胜感激。

代码语言:javascript
复制
namespace DotA.Server.Context
{
    public class DotAContext : DbContext
    {
        public DbSet<EFHero> Hero { get; set; }
        public DbSet<EFItem> Item { get; set; }
        public DbSet<EFSkill> Skill { get; set; }
        public DbSet<EFStat> Stat { get; set; }

        private Schema schema;
        private static readonly ConcurrentDictionary<Tuple<string, string>, DbCompiledModel> ModelCache = new ConcurrentDictionary<Tuple<string, string>, DbCompiledModel>();

        public DotAContext(Schema schema)
            : base("name=DotAConnectionString")
        {
            this.schema = schema;
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<EFHero>().ToTable("Hero", Schema.Scourge.ToString());
            modelBuilder.Entity<EFSkill>().ToTable("Skill", Schema.Scourge.ToString());
            modelBuilder.Entity<EFItem>().ToTable("Item", Schema.Scourge.ToString());
            modelBuilder.Entity<EFStat>().ToTable("Stat", Schema.Scourge.ToString());

            modelBuilder.Entity<EFHero>().ToTable("Hero", Schema.Legion.ToString());
            modelBuilder.Entity<EFSkill>().ToTable("Skill", Schema.Legion.ToString());
            modelBuilder.Entity<EFItem>().ToTable("Item", Schema.Legion.ToString());
            modelBuilder.Entity<EFStat>().ToTable("Stat", Schema.Legion.ToString());

            base.OnModelCreating(modelBuilder);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-02 05:39:52

您已经复制/重用了poco EntityNames。每个实体映射到一个表。它不能映射到多个表。当声明两次时,Context.Set<TPoco>()应该引用哪个表?在你的例子中,最后的定义是获胜。

你可以

  1. 创建多个上下文。每个上下文都具有所需的enityt映射。一次可以打开多个上下文。这样你就可以从一个连接到另一个。或访问2个上下文。
  2. 如果您真的需要一个上下文中的表。然后,您需要声明每个实体。也许使用抽象的基础。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20320595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档