为什么我的所有模型类都被添加到我使用多个数据上下文类时创建的第一个Configuration.cs文件中?

时间:2015-02-23 19:53:40

标签: entity-framework entity-framework-6 entity-framework-mapping

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

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

仅供参考:我读过这篇文章:

Entity Framework 6 Code First Migrations with Multiple Data Contexts

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

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

在我的第一个数据上下文RulingRequestContext中,我有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步后,我得到:一个文件夹,名为RulingRequestContextMigrations,包含2个文件:

201502212023508_Initial.cs和Configuration.cs。

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

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

以下是我的RulingRequest模型类的快照。

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个数据上下文类都有一个使用Agency的模型类,并具有:

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类做同样的事情?

感谢您抽出宝贵的时间阅读本文!请告诉我,如果有什么我可以做或不做的事情,以便将来更好地发布我的帖子!

1 个答案:

答案 0 :(得分:0)

是的,它抓住了相关实体。您的链接讨论了从其他上下文中注释表“在运行更新命令之前,如上所示注释了Users表的生成代码。由于Users表已经由第一次DbContext迁移创建。”