0
我有一个数据库与两个表链接。当我运行初始迁移时,即使这不在我的模型中,我仍会添加额外的Analysis_Id
字段。代码第一次迁移添加加下划线字段
我的基本设置是一个分析将有一段时间的结帐历史(1到很多)。但是在任何时候它只会有1个(由分析表上的CheckedOutById表示)。
public class CheckOut
{
public int Id { get; set; }
[ForeignKey("ByUser")]
public int ByUserId { get; set; }
public virtual UserProfile ByUser { get; set; }
public int AnalysisId { get; set; }
[ForeignKey("AnalysisId")]
public virtual Analysis Analysis { get; set; }
public DateTime At { get; set; }
}
public class Analysis
{
public Analysis()
{
Revisions = new Collection<AnalysisRevision>();
}
public int Id { get; set; }
public string Name { get; set; }
public int SupplierSeasonId { get; set; }
public virtual SupplierSeason SupplierSeason { get; set; }
[ForeignKey("CheckedOutById")]
public virtual CheckOut CheckedOutBy { get; set; }
public int? CheckedOutById { get; set; }
public DataState DataState { get; set; }
public virtual ICollection<CheckOut> CheckOuts { get; set; }
public virtual ICollection<AnalysisRevision> Revisions { get; set; }
[ForeignKey("SourceId")]
public virtual AnalysisSource Source { get; set; }
public int SourceId { get; set; }
}
生成的迁移
CreateTable(
"dbo.CheckOut",
c => new
{
Id = c.Int(nullable: false, identity: true),
ByUserId = c.Int(nullable: false),
AnalysisId = c.Int(nullable: false),
At = c.DateTime(nullable: false),
Analysis_Id = c.Int(), // The rogue column
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Analysis", t => t.AnalysisId, cascadeDelete: true)
.ForeignKey("dbo.UserProfile", t => t.ByUserId, cascadeDelete: true)
.ForeignKey("dbo.Analysis", t => t.Analysis_Id)
.Index(t => t.ByUserId)
.Index(t => t.AnalysisId)
.Index(t => t.Analysis_Id);
而对于分析表脚本(注意流氓CHECKOUT_ID场)
CreateTable(
"dbo.Analysis",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(),
SupplierSeasonId = c.Int(nullable: false),
CheckedOutById = c.Int(),
DataState = c.Int(nullable: false),
SourceId = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.SupplierSeason", t => t.SupplierSeasonId, cascadeDelete: true)
.ForeignKey("dbo.CheckOut", t => t.CheckedOutById)
.ForeignKey("dbo.AnalysisSource", t => t.SourceId, cascadeDelete: true)
.Index(t => t.SupplierSeasonId)
.Index(t => t.CheckedOutById)
.Index(t => t.SourceId);
感谢您的评论。关于一对一。所以我想没有办法从Analysis到CheckOut的关系基本上就是我想要的而不会产生这个额外的属性? – dreza
@dreza如果你只想要一对一的关系,那么你应该删除导航属性'ICollection CheckOuts' –
agarwaen
我希望这两个。我希望Analysis包含结帐列表,但我也希望它包含对最近一个的引用...... – dreza