实体框架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类做同样的事情?
感谢您抽出宝贵的时间阅读本文!请告诉我,如果有什么我可以做或不做的事情,以便将来更好地发布我的帖子!
答案 0 :(得分:0)
是的,它抓住了相关实体。您的链接讨论了从其他上下文中注释表“在运行更新命令之前,如上所示注释了Users表的生成代码。由于Users表已经由第一次DbContext迁移创建。”