Code First:Fluent api 会影响 UI 吗?

2023-12-28

我正在读 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(使用前将#替换为@)

Code First:Fluent api 会影响 UI 吗? 的相关文章

  • 使用 ASP.Net vNext 发送邮件

    一般来说 在传统的 ASP Net 和 Net 中 发送邮件是通过System Net Mail所在的类System dll 现在有了KRE vNext好像就没有了System Net Mail作为一个单独的包 参考 net453 框架在p
  • OWIN 可以替代 ASP.NET MVC 应用程序中的 DI 吗?

    大约一年前 在 Visual Studio 中创建时自动生成的 MVC 项目不包含任何有关 OWIN 的内容 作为再次申请并试图了解这些变化的人 我想知道 OWIN 是否可以替代我的 DI 据我了解 Startup Auth cs 中的以下
  • 播种多对多数据

    您好 我正在尝试为我的项目创建一些种子 但我在将多对多关系数据播种到数据库时遇到问题 My database看起来像这样 in 教师技能 教师ID and Skill ID当然是他们的表的外键 My seeder看起来像这样 protect
  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • .NET-MVC - 通过 SSL 重写 URL + 某些 URL?

    我有一个运行 IIS 6 NET MVC 和单个域名的网络服务器 该网站使用 URL 重写来生成如下 URL 域名 com controller action 我愿意强行一 1 个控制器 to use SSL 其他的应该无需 SSL 即可工
  • 使用 LINQ 和 ASP.NET MVC 更新多个表

    只是简单地说一下 我只是想寻求一些澄清 我希望通过一个 创建 操作来更新多个表 在尝试之前 我只是想知道是否可以简单地执行以下操作 db hdCalls InsertOnSubmit a db hdCustomers InsertOnSub
  • Sendgrid System.ArgumentException:未知元素:html

    我刚刚将以下软件包更新到最新版本 a SendGrid SmtpApi 更新至 1 3 1 b SendGrid 更新至 6 0 突然间 WebTransport Deliver 方法不再存在 没问题 我已切换到 DeliverAsync
  • 使用 DependencyResolver 通过 MVC 3 进行控制器实例化时出错

    我正在使用 MVC 3 并在应用程序启动时使用以下代码 UnityContainer container new UnityContainer new UnityMappings container DependencyResolver S
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • PDF 在 Safari 中隐藏 Jquery Modal

    这是与我有关的事情this https stackoverflow com questions 24052681 pdf hide jquery modal in ie问题 在 IE 中 我在对话框中使用 iframe 解决了问题 所以它工
  • href 中的 Mono ASP.NET MVC 波形符导致 System.NotImplementedException

    我正在尝试在 Ubuntu 14 04 1 上使用 Mono 3 12 0 制作 ASP NET 应用程序 每当我尝试在我的 href 中使用波浪号时 Layout cshtml 我得到一个System NotImplementedExce
  • 将DataTable批量插入postgreSQL表中

    在 SQL 中 我们执行类似的操作来批量插入数据表 SqlBulkCopy copy new SqlBulkCopy sqlCon copy DestinationTableName strDestinationTable copy Wri
  • MVC:如何让控制器渲染从视图启动的部分视图

    在我的 MVC5 项目中 我想在部分视图中创建一个菜单 该菜单是动态的 因为它是根据我的数据库中的内容构建的 因此 我有一个控制器负责创建菜单并将菜单模型返回到我的部分视图 public PartialViewResult GetMenu
  • 将 ninject 与 Ninject.Web.Api 用于 Web Api 2 一起使用在 ASP.NET MVC 5 中不起作用

    我正在开发一个 Asp NET MVC 项目 我的项目也有 web api 我正在使用 ASP NET MVC5 和 Web Api 2 以及 Visual Studio 3 我正在使用 ninject 进行依赖项注入 我知道 ninjec
  • 相对于路径匹配路由

    我想要任何以以下结尾的网址 templates filename 使用路由属性映射到特定控制器 例如 public class TemplateController Controller Route templates templateFi
  • ASP.NET 会话状态和多个工作进程

    我需要了解一些有关 ASP NET 会话状态的信息 因为它适用于 IIS 7 和 ASP net 3 5 如果应用程序配置为使用进程内会话状态 那么如果有多个工作进程 该应用程序是否可以正常工作 换句话说 工作进程是否共享会话状态 IIS
  • 如何处理 ASP.net MVC Ajax 加载页面上的 jQuery 事件?

    我有一个问题 我是 jQuery Mobile 领域的新手 对于 ASP Net MVC 部分我有点迷失 这是我的问题 在我的移动网站中 我想更改导航栏 我使用的更像是应用程序栏 按钮 而我位于编辑页面或主页等 因此 这些页面 编辑 显示
  • 我的 Razor 视图中出现奇怪的自动命名空间导入

    今天我注意到 例如 System 和 System Web Security 已导入到我的所有 razor 视图中 尽管我没有主动导入它们 我检查了 using指令 web config 编辑 也是全局 web config 添加全局导入

随机推荐

  • React Native 键盘白色闪烁

    在我的 React Native 应用程序中显示和隐藏键盘时 键盘所在的位置会出现白色闪烁 请参阅以下内容 https photos app goo gl Bwmin9T1R4OAO9tB3 https photos app goo gl
  • Spring @ExceptionHandler 不适用于 @ResponseBody

    我尝试为rest 控制器配置一个spring 异常处理程序 该控制器能够根据传入的accept 标头将映射渲染到xml 和json 它现在抛出 500 servlet 异常 这有效 它获取了 home jsp ExceptionHandle
  • 向 python 对象添加新的成员变量?

    我已经开始阅读 Magnus Lie Hetland 的 Beginning python from novice to professional 今天让我印象深刻的是对象创建新成员变量的能力 即使这些成员变量不存在于该对象所在的类中被 创
  • 使用 wpf 中的自定义 TextElement 扩展 FlowDocument

    我想通过创建我自己的 Span 和 Run 衍生产品来扩展 FlowDocument 的功能 这可能吗 有人找到任何例子吗 微软没有公开渲染自定义所需的方法文本元素 http msdn microsoft com en us library
  • WildFly (JBoss) 下的 JTDS 模块

    我正忙着从 JBoss 7 1 1 升级到 Wildfly 8 0 0 Beta1 我在 JBoss 下使用 JTDS 数据库驱动程序没有问题 但它在 WildFly 下无法工作 我已经创建了 net sourceforge jtds ma
  • Pycharm - 在调试器中启用自动换行

    例如 在 Pycharm 2017 3 的调试器中 当我打印一本大字典时 它全部在一行上 我希望这本词典能够换行 这样我就可以看到更多内容 我相信以前版本的 PyCharm 具有这种包装行为 我查看了设置 只能找到编辑器的自动换行 For
  • 如何知道MKMapView的visibleMapRect是否包含坐标?

    如果我有 MKMapView 和 CLLocationCooperative2D 如何测试地图的可见区域是否包含坐标 最快的方法是使用内置的苹果功能 这将使此类事情变得超级快 if MKMapRectContainsPoint mapVie
  • 附加操作按钮在 Flask-admin 上不起作用

    我正在尝试向 Flask admin 表单添加一项操作 它必须增加评级 1 并且它适用于批量操作 但不适用于单个操作 请帮我找到这个错误 我花了很多时间试图让这个东西正常工作 这是代码 我在 templates 文件夹中制作了一个 html
  • 我可以更改 Azure Function Event Hub 触发器启动检查点吗?

    当我使用新的消费者组建立一个新的 Azure Function 来侦听我们的事件中心时 它会获取曾经发送到事件中心的所有消息 甚至是几个月前的消息 我认为将集线器上的消息保留设置为一天会限制这一点 但显然不是 不管怎样 我真的只希望新的 A
  • 收到“未安装 qmlscene”。 “Ubuntu”上“QT CREATOR”中的警告

    我将 QTStatic 添加到 QT 版本 但我无法使用此版本在套件选项卡中构建和设置 我上传了下面的屏幕截图 请帮助 版本选项卡屏幕截图 https i stack imgur com rpaGB jpg 套件选项卡屏幕截图 https
  • 如何在 Rails 视图中呈现所有评论?

    我是 Rails 新手 所以放轻松 我创建了一个博客 我已成功实施评论并将其附加到每个帖子中 现在 我想在侧边栏中显示所有帖子的最新评论列表 我认为这里涉及两件事 对comment controller rb的更新 然后是从实际页面的调用
  • postgresql - 替换文本字段中字符串的所有实例

    在 postgresql 中 如何替换数据库列中字符串的所有实例 假设我想替换所有实例cat with dog 例如 最好的方法是什么 你想使用 postgresql 的replace http www postgresql org doc
  • Ant 任务

    我现在看到 Ant 既有
  • 如何访问iOS中的弱链接框架?

    我想在 iOS 5 上使用 Twitter 框架 但能够在旧操作系统中运行我的应用程序 我在 Xcode 4 2 Target 设置中添加了弱引用框架 即设置 可选 标志 基础 SDK 是 iOS 5 iOS 部署目标是 iOS 3 2 接
  • 如何将第三方 npm 包与 ember cli 应用程序一起使用

    EDIT 这实际上是关于任何不适合与 ember 一起使用的 npm 包 就我而言 我尝试让 crypto js 工作 但对于任何不是专门为 ember cli 设计的 npm 包来说 似乎总是遇到同样的问题 我想在我的 ember 应用程
  • Python 错误代码已升级

    考虑一个 python 脚本 error py import sys sys exit 3 Invoking python error py echo 产生预期的 3 但是 考虑 runner py import os result os
  • 在 Android 应用程序中使用个人证书

    我希望用户能够在从生成证书的网站安装后将他们自己的个人证书安装到我的 Android 应用程序中 但是当我使用 WebClient 或 Android 浏览器浏览它时 安全存储会弹出并安装它 在版本 14 Android 4 0 之前 AP
  • 带返回值的动态 Linq 表达式

    我需要创建一个动态 linq 表达式 然后我开始使用许多示例 我测试了一些工作 有些没有 在这种情况下 我想创建一个如下所示的方法 public bool Check int intvar if i gt 2 return true els
  • Laravel 4:调用未定义的方法 Redis::connection()

    我对这个错误快要疯了 我有一个 Debian 7 的 vagrant VM 用 Puphpet 生成 安装得很好 1 Redis已安装并运行 redis server在跑 我可以使用服务器127 0 0 1 6379 2 安装php5 re
  • Code First:Fluent api 会影响 UI 吗?

    我正在读 Julie Lerman 写的一本关于 Code First 的书 根据这本书 注释和 Fluent api 给出相同的结果 一切都取决于开发人员的风格 我知道注释允许配置代码如何首先生成数据库对象以及 MVC 如何自定义 UI