我正在读 Julie Lerman 写的一本关于 Code First 的书。根据这本书,注释和 Fluent api 给出相同的结果。一切都取决于开发人员的风格。
我知道注释允许配置代码如何首先生成数据库对象以及 MVC 如何自定义 UI 元素。假设我使用 [Required, MaxLength(50)]。该属性将在数据库中生成 NOT NULL、nvarchar(50)。它还将验证该字段的输入。
[Required, MaxLength(50)]
public string Name { get; set; }
如果我决定首先使用 Fluent API 来配置代码怎么办?我是否仍然需要注释来影响 UI 元素,或者使用流畅的 API 就足够了?
EDIT
注释怎么样,例如仅用于 UI 目的的 Display?他们有同等的吗?如果没有,我需要使用注释吗?
[Display(Name = "Date of Birth")]
public DateTime BirthDate { get; set; }
感谢您的帮助
数据注释是告诉类强制执行某些验证规则的最简单方法。您也可以使用 Fluent API 做同样的事情。有些人喜欢通过数据注释来完成,有些人喜欢使用 Fluent API 来完成
喜欢数据注释的理由
1)将有关我的实体的验证信息与实体定义一起保存在一处
喜欢 Fluent API 的理由
1)保持我的实体清洁。它只会包含我的财产信息。没有验证信息。干净简单的 POCO。我将在上面写下验证OnModelCreating
我的数据上下文类中的方法。
你不能用数据注释的方式完成所有 Fluent API 的事情。同样,您没有几个与 Fluent API 方式等效的数据注释属性(例如:HasMinLength)。HasMinLength
是我们用于模型验证的东西,这通常在 UI 中有意义。
对于 UI 模型验证,不能单独使用 Fluent API。 Fluent API 的主要作用是查看我们编写并执行的 Fluent 配置创建模型(数据库)时来自实体。请记住,我们正在覆盖OnModelCreating
编写流畅 API 配置的方法。因此,对于(我的 ViewModel 的)UI 验证,如果我想定义一些与我的数据模型相关的内容(例如定义外键或将此实体映射到具有不同名称的表等),我将使用 DataAnnotation 方式并使用 Fluent API。
EDIT :根据问题编辑,
在这种情况下,您应该使用数据注释。如果你先写代码。您可能还记得该实体将是您的数据库表(当然您可以告诉 EF 忽略/重命名特定列)。在这种情况下,我会保留我的Entities
清理并创建一个ViewModel
我将在我的用户界面中使用它。我将添加我的DataAnnotations
in my ViewModel
来处理它。我可能会编写一些映射代码,在必要时将数据从 ViewModel 映射到 Model,以及将 Model 映射到 ViewModel。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)