为什么MS决定使用约定优于配置。
我处理的是非常大的项目,并非所有项目都以数据为中心。实际上,即使是以数据为中心的项目,我的实体类也有许多需要与持久性无关的自定义功能。
使用当前的MSM方法,我最终不得不将属性应用于非持久性属性而不是相反。难道不应该是代码优先的吗?要使用工作类层次结构并将其转换为持久性兼容,作为“添加'?
”据我所知,某些约定非常有用,例如Identity或主键属性和外键的命名。但老实说,如果他们没有类结构,请告诉我有多少开发人员会使用代码优先而不是模型优先?
答案 0 :(得分:3)
您不需要在类中使用任何依赖于持久性的属性。 EF代码首先使用模型配置来定义映射 - 该配置可以直接在派生的DbContext的OnModelCreating
方法中定义,也可以在每个实体和复杂类型的单独配置类中定义。属性只是转换为这些配置的快捷方式。
答案 1 :(得分:2)
如果您正在创建适当的抽象,那么这应该不是IMO的问题。听起来您正在将业务实体和逻辑与数据实体混合在一起。如果您遵循存储库模式并抽象持久性实体,那么您的大多数POCO都应遵循约定。我建议重新评估你的架构,因为它听起来与持久层非常相关。如果您创建一个更松散耦合的体系结构,那么这些约定应该对您有意义。只是我的两分钱,但
答案 2 :(得分:1)
我已经将代码首先应用于预先存在的业务对象,以创建一个持久性无知的架构。在这种情况下应用EF的方法不止一种 - 我同意用属性打扮业务对象并不理想。我们过去做过的是
它对我们来说效果很好,并且很好地将上层与DAL分离