我可以在Entity Framework Code First中禁用自动关系吗?

Bre*_*ett 8 .net entity-relationship entity-framework-4.1

我注意到Entity Framework在其最新版本中仍然具有许多"自动化"功能.一如既往,这是一把真正的双刃剑.

具体来说,我正在使用OnModelBuilder事件使用fluentAPI(http://msdn.microsoft.com/en-us/library/hh295844(v=vs.103).aspx)在代码中动态创建我的模型.我有一大堆实体,并且它们并不都符合Microsoft"标准".例如,我的ID列名为Person_id而不是PersonId.因此,实体并不总是自动检测表上的主键,或者至少它似乎没有这样做.

我不介意在构建模型时明确,但令困扰的是,我并不总是确定实体将自动检测哪些属性和关系以及哪些属性和关系将错误地忽略或错误识别. 由于我的大多数实体也有一个带有辅助方法和属性的部分类(处理枚举的东西等),我非常担心有一天实体会自动创建不应映射的事物之间的映射(失败可能是实体或某些毫无戒心的程序员).

有没有办法可以禁用Entity的自动关系连接功能,以便我可以在我的OnModelBuilder方法中100%显式?或者,至少,我如何知道何时需要添加额外的映射详细信息(例如需要声明字段可选,或者何时不会自动检测特定的导航属性)?

谢谢!

Lad*_*nka 6

自动魔术首先由EF代码内的约定完成.您可以删除任何这些约定以关闭一些魔法,或者您可以将它们全部删除,之后您必须在您的fluent-API中100%明确.