8

有时候实体框架会生成糟糕的导航属性名称。使用数据库优先方法,解决这个问题的最好方法是什么?重命名导航属性

我可以根据自己的喜好编辑t4模板,但是如何将这些修改后的名称绑定到实际关系?我应该写一个脚本来修改edmx文件吗?显然,手工操作是很难做到的。

+0

EF5中没有edmx。你在说EF4吗? – zsong

+0

@sza,这很奇怪,它声称是参考属性中的第5版。我实际上做了一个“ADO.NET实体数据模型”。 –

+0

我认为这个线程有一个更详细的解释,在EF 5.x T4模板中要做些什么来实现这一点。 http://stackoverflow.com/questions/12937193/improve-navigation-property-names-when-reverse-engineering-a-database – Bostrong

回答

1

是的,你可以。在大多数情况下,您只需要从EF模型设计器重命名该NavPr并保存该模型。然后EF在您的DbContext.tt实体类中重命名该NavPr,并且不会造成任何问题。

如果遇到问题,请右键单击重命名的NavPr并选择属性。然后将其Association属性更改为数据库中的实际关系。

如果在那里看不到相关关系名称,请删除该实体以及与其有关系的所有其他实体,请右键单击模型设计器并选择Update model from database。然后,只需重命名那个丑陋的NavPr并保存模型。

+3

我不想在模型设计器中做到这一点。通常有太多的表格。此外,如果需要生成新模型,所有更改都将丢失。我想要的是告诉EF如何使用命名约定。 –

+0

您可以通过在DbContext中重写'OnModelCreating'来删除EF的命名约定,通过这样做,您必须将所有有关命名属性,外键等的内容告诉EF ...!哪种方式更简单? – AminSaghi

+2

'OnModelCreating'仅适用于Code First,不是吗?我需要使用Database First的解决方案。 –