多个db上下文中的公共实体Entity Framework Core

时间:2017-11-24 23:28:49

标签: entity-framework asp.net-core entity-framework-core

我正在创建一个游戏并将我的域分为三个模块。我的第一个想法是创建多个数据库上下文,因为它应该非常适合我的目的,问题是一些实体对于所有模块都是通用的,但在不同的模块中它们具有不同的行为。这样的示例是Player实体我想拥有不同的Player域对象,但两者都应映射到一个数据库表,因此继承不是我的选项,因为我不想继承其他模块的行为。

在经济环境中,玩家看起来

public override void Configure(EntityTypeBuilder<Player> entity)
    {
        entity.HasKey(c => c.Id);
        entity.HasOne(x => x.PlayerBuildings)
            .WithOne(x => x.Player)
            .HasForeignKey<Player>(x => x.Id);
        entity.HasOne(x => x.Store)
            .WithOne(x => x.Player)
            .HasForeignKey<Player>(x => x.Id);
        entity.HasOne(x => x.ConstructionQueue)
            .WithOne(x => x.Player)
            .HasForeignKey<Player>(x => x.Id);

        entity.ToTable("Player");
    }

在世界范围内,它看起来像

public override void Configure(EntityTypeBuilder<Player> entity)
{
    entity.HasKey(c => c.Id);
    entity.ToTable("Player");
}

public override void Configure(EntityTypeBuilder<Realm> entity)
{
    entity.HasKey(c => c.Id);
    entity.HasMany(x => x.Players)
            .WithOne(x => x.Realm)
            .HasForeignKey(x => x.RealmId);
        entity.ToTable("Realm");
}

当我运行“add-migration name”时,它正确地添加了迁移,但是在两个模块中它都生成了create table sql。但它应该只创建一次并延长。你有任何提示吗?

0 个答案:

没有答案