用于数据库配置的 OnModelCreating 与 DataAnnotations

Jam*_*mes 5 asp.net-mvc entity-framework poco

我有一个 ntier 解决方案,其中有一个用于我的 POCO 类的域项目。我想生成一些表字段限制为特定长度的数据库。现在我看到有两种方法可以做到这一点,要么在 POCO 类本身中使用数据注释,要么在我的 DbContext 中使用 OnModelCreating 方法,但哪一种是最好的方法?

我对 OnModelCreating 方法的担忧是,这是特定于实体框架的。如果我切换到另一个 ORM,数据库配置就会丢失,除非我重新实现它。

使用注释方法,我最终会弄乱我的模型,并担心它们会丢失“POCO”标签。我也不确定其他 ORM 是否会尊重这些注释。另一方面,有关数据库应该是什么样子的所有信息都与模型相关联,因此易于维护。

有什么想法可以指引我正确的方向吗?

Lad*_*nka 4

OnModelCreating更好。某些映射功能无法通过数据注释获得。此外,正如您在某些情况下已经提到的,数据注释违反了 POCO 原则,因为您的类可以包含有关持久性的信息,甚至某些数据注释当前需要在域项目中引用 EntityFramework.dll。

另请注意,数据注释是 MS 特定功能,主要由 MS 工具使用。如果你想将它们与其他 ORM 一起使用,你将必须实现从数据注释到 ORM 映射描述的转换(除非它已经存在)。