0

具有多个数据上下文的实体框架 6 代码优先迁移

注意:这是我在 Stack Overflow 上的第一篇文章,所以如果我需要提供更多详细信息,请告诉我。

仅供参考:我已阅读文章:

具有多个数据上下文的实体框架 6 代码优先迁移

我正在尝试做类似的事情。我的问题/问题围绕在 Configuration.cs 文件中生成的 CreateTable 方法。

我有 29 个模型类,我正在尝试设置 4 个不同的数据上下文。

在我的第一个数据上下文 RuleRequestContext 中,我有 29 个模型类中的 11 个:

public class RulingRequestContext : BaseContext<RulingRequestContext>
{
    public DbSet<RulingRequest> RulingRequests { get; set; }
    public DbSet<Agency> Agencies { get; set; }
    public DbSet<RulingRequestGroup> RulingRequestGroups { get; set; }
    public DbSet<RulingRequestOverallOutcome> RulingRequestOverallOutcomes { get; set; }
    public DbSet<RulingRequestType> RulingRequestTypes { get; set; }
    public DbSet<RulingRequestResult> RulingRequestResults { get; set; }
    public DbSet<Issue> Issues { get; set; }
    public DbSet<Decision> Decisions { get; set; }
    public DbSet<RulingRequestRoutingInformation> RulingRequestRoutingInformations { get; set; }
    public DbSet<Staff> Staffs { get; set; }
    public DbSet<StatusOfRulingRequest> StatusOfRulingRequests { get; set; }

使用包管理器,我遵循以下 3 个步骤:

注意:这些是通用说明:

(1) enable-migrations -ContextTypeName <DbContext-Name-with-Namespaces> -MigrationsDirectory:<Migrations-Directory-Name>
(2) Add-Migration -configuration <DbContext-Migrations-Configuration-Class-with-Namespaces> <Migrations-Name>
(3) Update-Database -configuration <DbContext-Migrations-Configuration-Class-with-Namespaces> -Verbose

第 2 步是我的问题所在。运行第 2 步后,我得到: 一个名为 RulerRequestContextMigrations 的文件夹,其中包含 2 个文件:

201502212023508_Initial.cs 和 Configuration.cs。

当我查看 Configuration.cs 时。文件中,函数 public override void Up() 对我的所有 29 个模型类都有一个 CreateTable 函数。

我认为只会创建我的 RuleRequestContext 类中列出的 11 个。

这是我的 RuleRequest 模型类的快照。

public class RulingRequest
{
    public RulingRequest()
    {
        this.RulingRequestResults = new HashSet<RulingRequestResult>();
        this.RulingRequestRoutingInformations = new HashSet<RulingRequestRoutingInformation>();
    }

    [DisplayName("Ruling Request ID")]
    public int RulingRequestID { get; set; }
    [DisplayName("Employee ID Number")]
    public string EmployeeIDNumber { get; set; }
    [DisplayName("Case Group")]
    public string RulingRequestGroupID { get; set; }
    [DisplayName("Type")]
    public Nullable<int> RulingRequestTypeID { get; set; }
    [DisplayName("First Name")]
    public string FirstName { get; set; }
    [DisplayName("Last Name")]
    public string LastName { get; set; }
    public string MI { get; set; }
    public string Suffix { get; set; }
    public string Address { get; set; }
    [DisplayName("Address 2")]
    public string Address2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public Nullable<int> Zip { get; set; }
    [DisplayName("Home Phone")]
    public string HomePhone { get; set; }
    [DisplayName("Work Phone")]
    public string WorkPhone { get; set; }
    public string Email { get; set; }
    [DisplayName("Agency")]
    public string AgencyNumber { get; set; }
    [DisplayName("Date Received")]
    public Nullable<System.DateTime> DateReceived { get; set; }
    [DisplayName("Grievance Initiation Date")]
    public Nullable<System.DateTime> GrievanceInitiationDate { get; set; }
    [DisplayName("Decision Date")]
    public Nullable<System.DateTime> DecisionDate { get; set; }
    [DisplayName("Re-Activation Date")]
    public Nullable<System.DateTime> ReActivationDate { get; set; }
    [DisplayName("Overall Outcome")]
    public Nullable<int> RulingRequestOverallOutcomeID { get; set; }
    [ScaffoldColumn(false)]
    public string CreatedBy { get; set; }
    [ScaffoldColumn(false)]
    public Nullable<System.DateTime> CreatedDatetime { get; set; }
    [ScaffoldColumn(false)]
    public string UpdatedBy { get; set; }
    [ScaffoldColumn(false)]
    public Nullable<System.DateTime> UpdatedDatetime { get; set; }

    public virtual Agency Agency { get; set; }
    public virtual RulingRequestGroup RulingRequestGroup { get; set; }
    public virtual RulingRequestOverallOutcome RulingRequestOverallOutcome { get; set; }
    public virtual RulingRequestType RulingRequestType { get; set; }
    public virtual ICollection<RulingRequestResult> RulingRequestResults { get; set; }
    public virtual ICollection<RulingRequestRoutingInformation> RulingRequestRoutingInformations { get; set; }

}

我的所有 4 个数据上下文类都有一个使用代理的模型类,并且具有:

public virtual Agency Agency { get; set; }

问题:

(1) 由于关系/虚拟属性,我的所有 29 个模型类是否都被添加到了 RulingRequest 的 Configuration.cs 中?例如,因为我的所有 4 个数据上下文类都有: public virtual Agency Agency { get; 放; 所有这些模型类都被添加到我的 RulingRequestContext.cs 类的 Configuration.cs 文件中。

(2) 假设我的初始数据上下文类 (RulingRequestContext) 和它的 Configuration.cs 类按预期工作,我是否应该注释掉其他 3 个 Configuration.cs 类中的所有 CreateTable 代码?

(3) 或者我应该注释掉在我的RulingRequestContext 中没有作为DBSet 属性出现的所有模型类的CreateTable 代码吗?然后对我的其他 3 个 DataContext 类做同样的事情?

感谢您花时间阅读本文!请让我知道是否有什么我可以做或不做的事情来让我的帖子在未来变得更好!

4

1 回答 1

0

是的,它正在抓取相关实体。您的链接谈到从其他上下文中注释掉表“在运行更新命令之前,注释掉用户表的生成代码,如上所示。因为用户表已经由第一个 DbContext 迁移创建。”

于 2015-02-23T20:07:30.333 回答