我有一个更复杂的解决方案,它为我的POCO课程提供了一个Domain项目。我想生成数据库,其中一些表字段被转换为特定长度。现在我看到两种方法:POCO类中的数据注释本身或者在我的DbContext中使用OnModelCreating方法,但这是最好的方法吗?
我对OnModelCreating方法的担忧是,这是特定于Entity Framework的。我应该切换到另一个ORM,除非我重新实现它,否则数据库配置将丢失。
使用Annotations方法,我最终使我的模型混乱,并担心他们失去了“POCO”标签。我也不确定其他ORM是否会尊重注释。另一方面,关于数据库应该是什么样子的所有信息都与模型相关联,因此很容易维护。
有任何想法指出我正确的方向吗?
答案 0 :(得分:3)
OnModelCreating
更好。某些映射功能无法通过数据注释获得。此外,正如您在某些情况下已经提到的,数据注释违反了POCO原则,因为您的类可以包含有关持久性的信息,甚至一些数据注释当前需要在您的域项目中引用EntityFramework.dll。
另请注意,数据注释是MS特定功能,主要由MS工具使用。如果要将它们与其他ORM一起使用,则必须实现从数据注释到ORM映射描述的转换(除非它已经存在)。