EF Core SaveChanges 是否根据数据注释进行验证

2023-12-05

我有一个带有数据注释的模型,我想知道如果数据注释失败,SaveChanges 方法是否可能失败?

我期望 SaveChanges 抛出“Test2 超出 2 到 4 范围”的异常。相反,它保存到数据库中。

例如,这是我的测试实体:

public class Visit
{
    public int Id { get; set; }

    [MaxLength(2)]
    public string Test { get; set; }

    [Range(2, 4)]
    public int Test2 { get; set; }
}

这是上下文:

public class Context : DbContext
{
    public Context()
    {

    }

    public Context(DbContextOptions<Context> options)
            : base(options)
    {
    }

    public DbSet<Visit> Visits { get; set; }
}

这是我用来测试它的非常简单的 MVC 控制器方法:

public HomeController(Context context)
    {
        context.Visits.Add(new Visit() {Test = "21", Test2 = 3423});
        var results = context.SaveChanges();
    }

这是我的project.json 文件:

{
  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "System.ComponentModel.Annotations": "4.1.0"
  },

  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
      },
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

根据与此问题相关的 github 问题,Entity Framework Core 不执行自动数据验证。

EF6 中存在一些 Core 中没有的功能列表,但有所更新here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF Core SaveChanges 是否根据数据注释进行验证 的相关文章

  • _bstr_t 内存泄漏

    我有一个 C 代码 但它没有正确释放内存 告诉我哪里错了 这是我的代码 1 void MyClass MyFunction void 2 3 for int i 0 i
  • C++ 相当于 C# 中的 new Random(seed)

    当我们在 C 中使用随机数生成器时 我们可以定义一个变量 例如 private Random rndGenerator 在课堂上然后打电话 rndGenerator new Random seed 正确地在类的构造函数中 我的问题是 这种定
  • ASP.NET Identity Extend 方法来访问用户属性

    我可以扩展方法来访问用户属性吗 有这样的方法 User Identity GetUserId User Identity GetUserName 可以从视图和控制器访问它们 我想使用以下方法扩展此功能 User Identity GetUs
  • 在业务逻辑中使用反射是一种好的做法吗?

    我需要开发一个由两个主要部分组成的应用程序 具有特定业务类别的业务逻辑部分 例如书籍 图书馆 作者 一个通用部分 可以在数据网格中显示书籍 图书馆 将它们映射到数据库 通用部分使用反射从业务类中获取数据 而不需要在业务类中编写特定的数据网格
  • 在运行时检查 GCC 版本

    我需要找出 C 程序执行过程中 运行时 可用的 系统中安装的 GCC 版本 主要版本和次要版本 意思是 以编程方式提取可用 gcc 的版本 就像我在 shell 中输入 gcc version 一样 但在 c 程序中 The GNUC an
  • 游戏网络射弹实施/概念问题[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试找到某种解决方案来解决同步射弹射击和游戏网络的常见问题 但我不确定什么是最合适的 这是一款 2D 动作横向卷轴游戏 带有多个射弹 没有即时攻
  • 在opencv中将三个灰度[R,G,B]图像合并为单个彩色图像

    我有 3 个使用 split 函数创建的灰度图像 现在我想重新生成彩色图像 我尝试了以下代码 但它不起作用 我得到的结果图像仍然是灰度的 cv Mat R cv imread home r secret R png 0 cv Mat G c
  • 泛型和实现 IComparable

    我对泛型非常陌生 我正在尝试编写一个简单的类 它将是泛型的 但也允许对字符串成员变量的一些描述进行排序 目前我有一个基本类 但是当我尝试实现接口成员 CompareTo 时 我在顶部收到一个错误 告诉我它尚未实现 这里有什么问题呢 usin
  • 为什么检查 SynchronizationContext 是否为 null?

    InstallIfNeed方法 http referencesource microsoft com System Windows Forms winforms Managed System WinForms WindowsFormsSyn
  • C# 中 a+=1 和 a=a+1 的区别

    我发现在C 中a 1不等于a a 1 例如 以下代码编译时不会出现任何错误 字节 b 10 b 5 而下面的代码有编译错误 字节 b 10 b b 5 有人可以告诉我为什么吗 Because b 5变成整数 Int32 主要是因为有重载的可
  • 如何在asp.net中创建动态复选框

    我正在创建一个需要添加动态复选框列表的应用程序 请任何人告诉我如何使用 C 添加动态复选框列表 在表单上放置一个带有 ID 的占位符placeHolder并将以下代码添加到您的Page Load CheckBoxList cbList ne
  • 无法打开包含的文件

    我使用的是 BorlandC 和 Windows 7 当我编译该文件时 出现以下错误 Error Assign C Unable to open include file stdio h Error Assign C Unable to o
  • 如何在 .NET 中使 ComboBox 不可编辑?

    我想要一个 仅选择 ComboBox它提供了一个项目列表供用户选择 应在文本部分禁用打字ComboBox控制 我最初对此进行谷歌搜索 发现了一个过于复杂 误导性的建议来捕捉KeyPress event 要使 ComboBox 的文本部分不可
  • 如何让一段代码只执行一次?

    我有一个应用程序 其中有多种功能 每个函数都可以根据用户输入多次调用 但是 我只需要在函数中执行一小段代码一次 最初是在应用程序启动时执行 当稍后再次调用同一函数时 不得执行这段特定的代码 代码在VC 请告诉我处理这个问题最有效的方法 使用
  • 如何从 Visual Studio 2012 导出 C# 应用程序以在其他计算机上运行?

    我刚刚在 Visual Studio 2012 中制作了我的第一个 C 应用程序 我想以某种方式导出它 以便其他人可以在他们的计算机 包括没有 Visual Studio 2012 的计算机 中使用它 我该怎么做 我是 C 新手 找不到任何
  • 避免使用一本字典的更好代码 - 区分大小写问题

    我有以下方法用数据读取器的值填充字典 数据读取器字段和传递给方法的属性之间可能存在大小写不匹配的情况 在下面的方法中 我首先将属性转换为小写以解决此问题 这会导致两个字典 有没有更好的方法用一本字典来实现这一目标 private Dicti
  • 如何将逗号分隔的列值与另一个表作为行连接

    我试图通过首先转换我正在成功执行的 SupplierId 列中的逗号分隔值来连接两个表 然而 当我尝试通过外键 DCLink 加入另一个带有供应商名称的表 Vendors 时 问题就出现了 这就是我的意思 原始表的 select 语句 SE
  • 使用DataContractSerializer进行序列化,但无法反序列化回来

    我有以下两个功能 public static string Serialize object obj DataContractSerializer serializer new DataContractSerializer obj GetT
  • 静态编译器和运行时编译器等术语的实际含义是什么?

    我正在努力学习更多 C 并尝试了解有关不同编译器及其技术的基础知识 我用谷歌搜索了很多次 但每次我都碰巧遇到需要更多解释的新术语 那么 本主题中的静态编译 动态链接等术语实际上意味着什么 某些语言 例如 C 在开始运行 即实际使用 之前将所
  • 如何在 C#/WPF 中停止动画?

    我有这样的事情 barProgress BeginAnimation RangeBase ValueProperty new DoubleAnimation barProgress Value dNextProgressValue new

随机推荐

  • 以编程方式禁用鼠标和键盘

    我想以编程方式在 Mac 上暂时禁用鼠标和键盘输入 使用 Objective C C Unix 然后重新启用它们 我制作了一个小型开源应用程序 允许您有选择地禁用键盘CGEventTap来自 OS X 的功能 它位于 Carbon Fram
  • Nhibernate 查询选择按行分组的计数

    我需要使用 NHibernate 获取此查询 Select RequestStatus Status Count ApprovalRequest Id From ApprovalRequest Inner Join RequestStatu
  • 在每行末尾添加文本

    我在 Linux 命令行上并且有文件 127 0 0 1 128 0 0 0 121 121 33 111 I want 127 0 0 1 80 128 0 0 0 80 121 121 33 111 80 我记得我的同事使用 sed 来
  • 如何使用 LWP 获取网页的开头部分?

    有谁知道通过 GET 或 POST 请求仅获取 50 网页的最佳方法吗 我获取的网页需要 10 20 秒才能完全加载 而且我只需要从页面开头过滤几行即可 use 5 010 use strictures use LWP UserAgent
  • Orchard 自定义表单下拉列表

    在尝试了 Orchards 的自定义表单模块之后 我决定使用下拉列表来选择特定的人 并将其电子邮件作为该所选选项的值 当我创建表单时 我无论如何都看不到您可以为您的选项设置值 See below image for example 不认为有
  • iPhone 如何按升序对 NSMutableArray 进行排序?

    我有 SQLite 数据库 DB 并将其作为模型类 并在 NSMutableArray 中获取 DB 的数据 我的数据库与这个数据库类似 学生姓名 注册号 加入日期 DoJ 我成功在 tableView 中显示 DoJ 但我想在 table
  • 与 lambda 一起使用的弱事件处理程序模型

    好的 所以这更像是一个答案而不是一个问题 但在询问之后这个问题 并将来自的各个部分组合在一起达斯汀 坎贝尔 Egor 还有来自 的最后一个提示 IObservable Rx Reactive 框架 我想我已经为这个特定问题找到了一个可行的解
  • 新 ASP.Net 网站模板的连接字符串问题

    这是使用 vs 2010 中的 新 ASP Net 网站 模板生成的连接字符串
  • 从 C# 刷新 Excel 数据透视表

    我试图刷新 Excel 工作表中的数据透视表 但出现以下异常 Item method in the PivotTables class failed 代码如下 pivotSheet Activate Microsoft Office Int
  • 给定 Oracle 中已知的分区键值,如何判断一行将进入哪个分区?

    CREATE TABLE foos batch id NUMBER creation date DATE PARTITION BY RANGE creation date SUBPARTITION BY HASH batch id SUBP
  • “其他”的文件读取权限不起作用

    我正在尝试向同一系统上的普通用户授予 lighttpd 访问日志文件的读取权限 目前的权限是 rw r r 1 www data www data 211K Feb 28 11 27 var log lighttpd access log
  • p:commandButton 更新在 ui:include 中不起作用

    我想通过 PPR 更新页面的一部分 这是我要更新的页面部分
  • 设置选项时 BitmapFactory.decodeStream 返回 null

    我有问题BitmapFactory decodeStream inputStream 当不带选项使用它时 它将返回一个图像 但是当我将它与选项一起使用时 如 decodeStream inputStream null options 它永远
  • 在 JSX/React 中使用 PHP 生成的数组数据构建动态表

    我正在尝试构建一个从 PHP 脚本的输出数组动态生成的表 执行 componentWillMount 后得到以下输出 但我正在尝试使用这些数据 前 4 行是一行 并构建一个表 但我无法了解如何使用此数组数据并将其动态转换为表 任何意见都将受
  • 使用传单和淡入淡出在地图上显示数据

    如何使用模态淡入淡出输入要显示的点的经度和纬度在地图上显示 下面的代码什么也没显示 但是当我在模态淡入淡出中使用json格式的url时 json格式的信息 我不知道如何在数据映射中使用类模态淡入淡出 modal fade 中的 url 应该
  • 在 matlab 中绘制时间序列数据

    我有一些从2007年5月1日到2007年5月30日00 00到23 59 58的数据 我想根据数据和时间一起绘制这些数据 如何同时定义日期和时间 因为它有固定的日期和时间 例如 2007 5 1 00 00 00 0 2 2007 5 1
  • 如何获取类中所有方法的方法引用(Java)?

    方法参考对于 Java 8 中的特定方法可以获取为Class Method 但是如何获取一个类的所有方法的方法引用呢 所有想要的方法都有不同的方法名称 但是same类型签名 此外 方法的名称是未知之前 Example class Test
  • django-tables2 linkColumn 外部 url

    我有 2 个模型属性 model name 和 model url 我需要创建一个 linkColumn 该列名称 model name 并链接到中指定的 url 型号 url 有可能实现这样的目标吗 thanks 您可以使用 Templa
  • 如何在本地主机上运行html文件?

    我有一个 HTML 文件 并在本地主机上运行它 但是 该文件包含使用网络摄像头的镜像 例如 我怎样才能运行这个 HTML 文件在本地主机上 在此示例中 当选中实时复选框时 网络摄像头将启动 您可以在以下位置运行您的文件http服务器 1 g
  • EF Core SaveChanges 是否根据数据注释进行验证

    我有一个带有数据注释的模型 我想知道如果数据注释失败 SaveChanges 方法是否可能失败 我期望 SaveChanges 抛出 Test2 超出 2 到 4 范围 的异常 相反 它保存到数据库中 例如 这是我的测试实体 public