添加迁移时,另一个具有代码优先的模式中的外键会创建引用表两次

Foreign Keys in another schema with Code-First creates referenced tables twice when adding migration

我会简化我的问题。 我有 2 个模式:addresscompany。他们每个人都有自己的背景。

地址 模式中我有这些 classes:

public class Country : GuidIdentifiable
    {
        public String Name { get; set; }
    }

public class City : GuidIdentifiable
    {
       public Guid Country_ID { get; set; }
       public String Name { get; set; }

       public Country Country { get; set; }
    }

company 模式中我有这个 class:

public class Store : GuidIdentifiable
{        
    public Guid Country_ID { get; set; }
    public Guid City_ID { get; set; }

    public String Name { get; set; }

    public Store Store { get; set; }
    public virtual Country Country { get; set; }
    public virtual City City { get; set; }
}

当我添加迁移时,address 架构和 company 架构都会添加国家和城市 table。 地址:

        CreateTable(
            "address.City",
            c => new
                {
                    ID = c.Guid(nullable: false),
                    Country_ID = c.Guid(nullable: false),
                    Name = c.String(nullable: false, maxLength: 255),
                    PTT = c.String(nullable: false, maxLength: 255),
                })
            .PrimaryKey(t => t.ID)
            .ForeignKey("address.Country", t => t.Country_ID, cascadeDelete: true)
            .Index(t => t.Country_ID);

        CreateTable(
            "address.Country",
            c => new
                {
                    ID = c.Guid(nullable: false),
                    Name = c.String(nullable: false, maxLength: 255),
                })
            .PrimaryKey(t => t.ID);

公司

        CreateTable(
            "company.City",
            c => new
                {
                    ID = c.Guid(nullable: false),
                    Country_ID = c.Guid(nullable: false),
                    Name = c.String(nullable: false, maxLength: 255),
                    PTT = c.String(nullable: false, maxLength: 255),
                })
            .PrimaryKey(t => t.ID)
            .ForeignKey("company.Country", t => t.Country_ID, cascadeDelete: true)
            .Index(t => t.Country_ID);

        CreateTable(
            "company.Country",
            c => new
                {
                    ID = c.Guid(nullable: false),
                    Name = c.String(nullable: false, maxLength: 255),
                })
            .PrimaryKey(t => t.ID);

如果第一个模式不创建所引用 table是为了自己吗?

=> 我相当确定它可以完成,因为我已经用数据库优先完成了它。

这里的问题并不像多上下文那样多模式。

我找到的最有用的解决方案是 (#2)。

我有一个完整模型的上下文,我用它来维护数据库,还有多个较小的模型在应用程序内部使用。