我的实体有一个List<SecondEntityDTO>。当EF生成表时,表SecondEntities中有一个列名FirstEntityDTO_id。我希望这个专栏被命名为"ParentEntity_id“。我怎么能这么做?
我试着注释了SecondEntityDTO列表和其他一些东西..。
Edit1:,我相信你们,女士们。
这是我的MainEntity:
[Table("MainEntities")]
public class MainEntityDTO
{
public string Title { get; set; }
[Key]
public int id { get; set; }
public List<SubEntityDTO> SubEntities { get; set; }
}这是SubEntityDTO:
[Table("SubEntities")]
public class SubEntityDTO
{
[Key]
public int id { get; set; }
public string Title { get; set; }
}这就是移民:
public override void Up()
{
CreateTable(
"dbo.MainEntities",
c => new
{
id = c.Int(nullable: false, identity: true),
Title = c.String(),
Discriminator = c.String(nullable: false, maxLength: 128),
})
.PrimaryKey(t => t.id);
CreateTable(
"dbo.SubEntities",
c => new
{
id = c.Int(nullable: false, identity: true),
Title = c.String(),
MainEntityDTO_id = c.Int(),
})
.PrimaryKey(t => t.id)
.ForeignKey("dbo.MainEntities", t => t.MainEntityDTO_id)
.Index(t => t.MainEntityDTO_id);
}注意SubEntities表上第三列的名称!
发布于 2015-01-20 20:13:23
此外,您也可以使用流利阿皮进行同样的操作,例如,重写上下文的OnModelCreating方法并执行以下操作:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<SecondEntity>().Property(s => s.FirstEntityDTO_id).HasColumnName("ParentEntity_id");
}更新
为什么不编辑指定该表的列的Func<>。正如您所看到的,您正在创建一个匿名类型,因此您可以更改该列的名称,例如:
CreateTable(
"dbo.SubEntities",
c => new
{
id = c.Int(nullable: false, identity: true),
Title = c.String(),
ParentEntity_id = c.Int(),
})
.PrimaryKey(t => t.id)
.ForeignKey("dbo.MainEntities", t => t.ParentEntity_id)
.Index(t => t.ParentEntity_id);如果这样做,请记住在Down方法中更改该属性的名称,但是如果您已经执行了该脚本,则不要在Down方法中更改FK名称。再次执行指定该脚本名称的Update Database命令。这将删除这些表,并且将再次使用Up方法创建这些表,但是现在使用您想要的FK名称-- it.In,此时您可以在Down方法中更改FK名称:
public override void Down()
{
DropForeignKey("dbo.SubEntities", "ParentEntity_id", "dbo.MainEntities");
DropIndex("dbo.SubEntities", new[] { "ParentEntity_id" });
DropTable("dbo.SubEntities");
DropTable("dbo.MainEntities");
}发布于 2015-01-20 19:42:55
将以下代码放入您的SubEntity类:
[ForeignKey("ParentEntity")]
public int ParentEntity_id { get; set; }
public virtual MainEntity ParentEntity { get; set; }https://stackoverflow.com/questions/28053787
复制相似问题