C# 代码优先迁移添加带下划线的添加字段
我有一个数据库,有两个链接的表。当我运行初始迁移时,会添加一个额外的C# 代码优先迁移添加带下划线的添加字段,c#,migration,code-first,entity-framework-6,C#,Migration,Code First,Entity Framework 6,我有一个数据库,有两个链接的表。当我运行初始迁移时,会添加一个额外的分析\u Id字段,即使该字段不在我的模型中 我的基本设置是,分析将有一个随时间(1到多)的签出历史记录。但是,在任何时候它都只有1(由分析表上的CheckedOutById表示) 以及分析表的脚本(注意rogue Checkout_Id字段) 实体框架只是执行您让它执行的操作。请注意,在分析和签出之间有两种关系 首先,您有一个一对一的关系,并且使用CheckedOutById和AnalysisId存储该关系 然后,由于分析实体
分析\u Id
字段,即使该字段不在我的模型中
我的基本设置是,分析将有一个随时间(1到多)的签出历史记录。但是,在任何时候它都只有1(由分析表上的CheckedOutById表示)
以及分析表的脚本(注意rogue Checkout_Id字段)
实体框架只是执行您让它执行的操作。请注意,在
分析
和签出
之间有两种关系
首先,您有一个一对一的关系,并且使用CheckedOutById
和AnalysisId
存储该关系
然后,由于分析
实体中的导航属性签出
,您也有一对多关系,但是签出
实体没有外键来存储此关系,实体框架正在为您生成一个
我还发现了其他问题,也许你想看看:
- 属性
放错了位置[ForeignKey(“ByUser”)]
- 如果使用命名约定,则不需要使用
属性ForeignKey
- 在构造函数中初始化导航属性将禁用更改跟踪代理(我相信会引发异常),因为您将覆盖EF为您创建的集合
DbContext
类中使用此选项
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<CheckOut>().HasRequired(c => c.Analysis).WithOptional(a => a.CheckedOutBy);
modelBuilder.Entity<Analysis>().HasMany(a => a.CheckOuts).WithRequired(c => c.AnalysisMany);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasRequired(c=>c.Analysis)。with可选(a=>a.CheckedOutBy);
modelBuilder.Entity().HasMany(a=>a.checkout).WithRequired(c=>c.AnalysisMany);
}
实体框架只是执行您告诉它的操作。请注意,在分析
和签出
之间有两种关系
首先,您有一个一对一的关系,并且使用CheckedOutById
和AnalysisId
存储该关系
然后,由于分析
实体中的导航属性签出
,您也有一对多关系,但是签出
实体没有外键来存储此关系,实体框架正在为您生成一个
我还发现了其他问题,也许你想看看:
- 属性
放错了位置[ForeignKey(“ByUser”)]
- 如果使用命名约定,则不需要使用
属性ForeignKey
- 在构造函数中初始化导航属性将禁用更改跟踪代理(我相信会引发异常),因为您将覆盖EF为您创建的集合
DbContext
类中使用此选项
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<CheckOut>().HasRequired(c => c.Analysis).WithOptional(a => a.CheckedOutBy);
modelBuilder.Entity<Analysis>().HasMany(a => a.CheckOuts).WithRequired(c => c.AnalysisMany);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasRequired(c=>c.Analysis)。with可选(a=>a.CheckedOutBy);
modelBuilder.Entity().HasMany(a=>a.checkout).WithRequired(c=>c.AnalysisMany);
}
实体框架只是执行您告诉它的操作。请注意,在分析
和签出
之间有两种关系
首先,您有一个一对一的关系,并且使用CheckedOutById
和AnalysisId
存储该关系
然后,由于分析
实体中的导航属性签出
,您也有一对多关系,但是签出
实体没有外键来存储此关系,实体框架正在为您生成一个
我还发现了其他问题,也许你想看看:
- 属性
放错了位置[ForeignKey(“ByUser”)]
- 如果使用命名约定,则不需要使用
属性ForeignKey
- 在构造函数中初始化导航属性将禁用更改跟踪代理(我相信会引发异常),因为您将覆盖EF为您创建的集合
DbContext
类中使用此选项
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<CheckOut>().HasRequired(c => c.Analysis).WithOptional(a => a.CheckedOutBy);
modelBuilder.Entity<Analysis>().HasMany(a => a.CheckOuts).WithRequired(c => c.AnalysisMany);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasRequired(c=>c.Analysis)。with可选(a=>a.CheckedOutBy);
modelBuilder.Entity().HasMany(a=>a.checkout).WithRequired(c=>c.AnalysisMany);
}
实体框架只是执行您告诉它的操作。请注意,在分析
和签出
之间有两种关系
首先,您有一个一对一的关系,并且使用CheckedOutById
和AnalysisId
存储该关系
然后,由于分析
实体中的导航属性签出
,您也有一对多关系,但是签出
实体没有外键来存储此关系,实体框架正在为您生成一个
我还发现了其他问题,也许你想看看:
- 属性
放错了位置[ForeignKey(“ByUser”)]
- 如果使用命名约定,则不需要使用
属性ForeignKey
- 初始化导航正确
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<CheckOut>().HasRequired(c => c.Analysis).WithOptional(a => a.CheckedOutBy); modelBuilder.Entity<Analysis>().HasMany(a => a.CheckOuts).WithRequired(c => c.AnalysisMany); }