c# - 验证可保存对象的属性长度最方便的地方在哪里?

标签 c# .net database validation data-integrity

我想知道验证持久对象的属性长度最方便的地方在哪里。

比方说,在我的数据库中有一个名为 Country 的表,CountryCode nvarvhar(3)。

我有一个映射对象 Country,它具有 CountryCode 属性,可以保存到 Db 中。

如果用户设置的国家代码不超过3个字符,应该在哪里查看:

  • 在属性 CountryCode 的 setter 中
  • 或者在保存到数据库的时候

能请教一下吗?

谢谢

最佳答案

我发现最简单的方法是允许将属性设置为任何值(无论如何都是正确的数据类型),然后在保存之前对其进行验证。

我喜欢使用 .Net 中内置的验证属性。这使逻辑与属性相关联。有一个 StringLengthAttribute类应该可以满足您的要求。

属性位于 System.ComponentModel.DataAnnotations 命名空间中(您需要引用同名程序集)。

MVC 和 EntityFramework 有一种内置的方式来验证数据。如果您需要自己执行逻辑,这里有一些代码可能会帮助您入门...

var ctx = new ValidationContext(obj, null, null);
Validator.ValidateObject(obj, ctx);

关于c# - 验证可保存对象的属性长度最方便的地方在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6722367/

相关文章:

c# - linq to xml检查 key 是否存在?

c# - WCF 静态变量在每次调用时重置

c# - C# 如何决定将哪个枚举值作为返回值?有什么规定吗?

php - 使用 ODBC Firebird 驱动程序在 PHP 中不带 FROM 子句的 SQL SELECT

java - 将 Hashmap 数据移至数据库

c# - 使用 C# 的 Windows 8 Live Tile 后台代理

c# - 如何在 SQLite 中有条件地插入或替换一行?

c# - 如何在 RestSharp 中反序列化 JSON?

c# - TcpListener 和 TcpClient 的异步函数存在问题,函数不等待等待关键字

mysql - 使用 MySQL,有什么方法可以转储数据库中所有 200 个表中每个表中的记录数?