2012-08-04 130 views
0

首先使用EF代码想要控制生成列的名称WHEN REFERENCING SELF。试过[ForeignKey][Column]属性。 [Column]不起作用,并且[ForeignKey]强制似乎导致问题的关系。我已经使用[ForeignKey]属性来设置连接到此类的另一个类/表中的列的名称。EF代码优先 - 为关系更改生成的列名称

public class Episodes 
{ 
    public long ID {get; set;} 
    // ... other properties 

    public List<Episodes> Children { get; set; } 
} 

希望有一个表(ID,...,ParentID) - 获得一个表(ID,...,Episode_ID

回答

1

如果没有外键列作为您的实体类中的属性公开,您可以只使用Fluent API定义列名称:

modelBuilder.Entity<Episodes>() 
    .HasMany(e => e.Children) 
    .WithOptional() 
    .Map(m => m.MapKey("ParentID")); 

我假设pa租金是可选的(ParentID是数据库表中的可空列),因为我猜,树中应该有一些“根”,即一个没有父母的情节,因此至少对于这个情节ParentID列必须是NULL

+0

答案看起来不错 - 但是当我这样做 - 获取运行时错误,当EF创建数据库“序列不包含任何元素” – 2012-08-04 20:07:35

+0

@SimonThompson:你能显示代码和该代码的行正好抛出此异常吗? – Slauma 2012-08-04 20:52:55

+0

有一些本格林姆林斯的地方 - 它现在的工作。感谢你的回答 – 2012-08-04 21:24:03