我注意到Entity Framework在他们的最新版本中仍然有很多“automagical”功能。一如既往,这是一把真正的双刃剑。我可以在Entity Framework Code First中禁用自动关系吗?
具体来说,我使用OnModelBuilder事件在代码中使用fluentAPI(http://msdn.microsoft.com/en-us/library/hh295844(v=vs.103)的.aspx)。我有一大批实体,他们并不都遵守微软的“标准”。例如,我的ID列被命名为Person_id而不是PersonId。因此,实体并不总是自动检测表上的主键,或者至少,似乎并不这样做。
我不介意在构建模型时明确表达,但是困扰我的是我并不总是确定实体会自动检测哪些属性和关系,以及哪些属性会错误地忽略或错误标识。因为我的大多数实体也有一个带有辅助方法和属性(处理枚举的东西等)的分类,所以我非常担心有一天实体会自动在不应该映射的东西之间创建映射(失败可能是实体或一些毫无戒心的程序员)。
有没有一种方法可以禁用实体的自动关系连接功能,以便我可以在我的OnModelBuilder方法100%显式?或者,至少我怎么知道什么时候需要添加额外的映射细节(例如需要声明一个可选字段,或者何时不会自动检测特定的导航属性)?
谢谢!
如果这东西让你担心,你可能应该使用EF的“设计优先”方面而不是更新的“代码优先”东西 –
我顺便开始使用EDMX。我试图'升级'为代码优先,认为它可能更容易管理,因为它都在代码中,但它可能不值得花费精力和时间进行调试。 – Brett