背景
与英法的核心代码第一种方法,验证是强大和简单:https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/validation实体框架的核心化异常处理分贝第一
与数据库的第一种方法,它似乎像任何验证正在发生由幕后数据库时调用dbcontext.SaveChanges();
。更糟的是,这些异常是模糊的和完全没有帮助,例如,SqlException: String or binary data would be truncated
可以抛出,如果的实体的任何的字符串属性的任何有太多的字符(我们是一个传统的应用程序充满了char(10)
和这样),或者即使是一个字符串的键也是空的。
问题
我想知道是否有任何合理或可接受的方式来执行验证。我发现this question这可能有助于调试,但我想执行的约束代码
有什么不是改变每一个汽车财产一抛出,如果它的约束得不到满足更好的方法?
,但我们正在写一个JSON-RPC over HTTP的数据库API来代替我们旧的存储过程架构,而不是一个网站。所以问题仍然是,sqlserver的验证错误信息完全没有价值,我需要一个解决方案,比如扩展代码生成工具以自动添加验证 –
无论是否为网站,您的提供API的框架都在进行验证,因为EF只是不会。由于代码中的验证是业务逻辑,所以从数据库中推断它们并不容易,因此数据库首先不会自行生成它们。您可以在从数据库生成模型之后编写额外的代码,也可以尝试在EF内核中修改代码编写器。虽然前者会容易得多。 – Smit
主要是我担心的约束类型就像它在db中的char(10)一样,但属性只是字符串,所以这些类型可以非常简单地从数据库中推断出来,但我想我'我需要自己添加它 –