2

Entity Framework 4 中是否有办法(如果重要,使用 CTP4 和 Code First)来更改用于自动识别主键和外键的约定?我正在尝试将 EF 与使用“pk/fk”前缀而不是“id”后缀来标记键的旧数据库一起使用。此外,一个地址表有多个外键也很常见,例如,称为“fkAddressHome”和“fkAddressWork”。

我更喜欢一种以系统方式更改此行为的方法,这样我就不必为每个表指定这些更改。我研究了在 OnModelCreating 方法中覆盖列名的选项,但令人失望的是,如果您以这种方式添加一列,那么您必须将它们全部添加。这违反了我的 DRY 敏感性。

但是,任何解决方案都将不胜感激。EF4,尤其是 CTP4 的 Code First 增强功能,非常非常好。我期待看到下一个版本的 EF 还能带来什么。谢谢您的帮助。

更新

我能够通过将以下内容添加到我的 OnModelCreating 方法来映射关系:

modelBuilder.Entity<User>()
    .HasRequired<Address>(p => p.Address)
    .HasConstraint((p, u) => p.fkAddressHome == u.pkAddress);

我不确定这是否是最优雅的方法,或者这是否最终会给我带来任何问题,但它现在正在工作。

4

1 回答 1

1

与模型生成器的流畅界面是实现此目的的正确方法。您还可以使用 DataAnnotation 属性(如果您更喜欢属性):

http://blogs.msdn.com/b/efdesign/archive/2010/03/30/data-annotations-in-the-entity-framework-and-code-first.aspx

于 2010-09-25T23:44:37.750 回答