我正在创建一个游戏并将我的域分为三个模块。我的第一个想法是创建多个数据库上下文,因为它应该非常适合我的目的,问题是一些实体对于所有模块都是通用的,但在不同的模块中它们具有不同的行为。这样的示例是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。但它应该只创建一次并延长。你有任何提示吗?