C# 类型(C.NET)的数据集验证

C# 类型(C.NET)的数据集验证,c#,wpf,visual-studio,validation,dataset,C#,Wpf,Visual Studio,Validation,Dataset,我在我的项目中使用数据集验证。我在DataTable的部分类中触发DataTable_ColumnChanged事件时进行验证,它正在执行它的工作,但我还想验证数据集级别(而不是UI)上的数据类型不匹配,以提供自定义错误消息。如果[someID]需要数字,但有人在文本框中输入字符串,例如 问题是,dataSet在引发DataTable_ColumnChanged事件之前的某个地方处理这种类型的错误,我理解这一点 所以问题是在哪里以及如何拦截它。我想在partial dataTable类中处理这个

我在我的项目中使用数据集验证。我在DataTable的部分类中触发DataTable_ColumnChanged事件时进行验证,它正在执行它的工作,但我还想验证数据集级别(而不是UI)上的数据类型不匹配,以提供自定义错误消息。如果[someID]需要数字,但有人在文本框中输入字符串,例如

问题是,dataSet在引发DataTable_ColumnChanged事件之前的某个地方处理这种类型的错误,我理解这一点

所以问题是在哪里以及如何拦截它。我想在partial dataTable类中处理这个问题,将其封装到属性或其他内容中,但VS生成了一堆代码,我不知道从哪里查找:谢谢。

ColumnChanging event\

改变事件\


这并不是你问题的答案,但当你提到VS正在创建一堆goo时,我觉得你可能正在使用拖放功能来完成这项任务。这就是为什么,正如你已经指出的,你不能弄清楚发生了什么

这个由studio编写的codegen使您的工作变得更加复杂。如果我建议您考虑删除这个自动生成的数据集,并创建您自己的类型化数据集,以便在项目早期替换它。如果您可以对一个更理智的类型化数据集进行此更改,它将帮助您避免陷入像现在这样的情况


此外,如果你有时间,你可能会考虑一个根本不使用数据集的设计,但这当然要多一些。大多数人都在使用诸如NHibernate或类似的ORM解决方案来完成我们过去使用数据集来完成的工作。显然,如果有时间或外部因素导致您必须使用数据集,那么请忘记这个ORM考虑因素,而是考虑删除自动生成的数据集并生成类型化数据集。这对你来说会容易得多。

这并不是你问题的答案,但当你提到VS正在创建一堆goo时,我觉得你可能正在使用拖放功能来完成这项任务。这就是为什么,正如你已经指出的,你不能弄清楚发生了什么

这个由studio编写的codegen使您的工作变得更加复杂。如果我建议您考虑删除这个自动生成的数据集,并创建您自己的类型化数据集,以便在项目早期替换它。如果您可以对一个更理智的类型化数据集进行此更改,它将帮助您避免陷入像现在这样的情况


此外,如果你有时间,你可能会考虑一个根本不使用数据集的设计,但这当然要多一些。大多数人都在使用诸如NHibernate或类似的ORM解决方案来完成我们过去使用数据集来完成的工作。显然,如果有时间或外部因素导致您必须使用数据集,那么请忘记这个ORM考虑因素,而是考虑删除自动生成的数据集并生成类型化数据集。这对你来说会容易得多。

那我们就给我们一些代码吧。如果要求Dataset执行此操作,Dataset将在Dataset上触发ColumnChanged事件。我的直觉是,它正在您的UI中被拦截,或者在新行被拦截。你能告诉我们你用来改变数值的代码吗。我们可以从这里进行故障排除,因为列是通过XAML绑定到文本框的。我不喜欢UI中数据类型的逻辑。Text={Binding Path=Naziv,UpdateSourceTrigger=PropertyChanged,validatesondaerros=True}老实说,我在以前的项目中做了您想做的事情,编写代码非常困难。结果是您在数据集中的内存中实现了RDBMS。有时候最好在GUI中捕捉一些愚蠢的东西,或者在一行中提供一个验证函数,但让数据库告诉您什么时候出错。谢谢您的回答。我仍然在学习这些东西,我发现最大的问题是学习什么,在什么情况下使用?。我开始意识到没有银弹。任何地方都有需要作出的妥协。时间与灵活性。那么我们给我们一些代码。如果要求Dataset执行此操作,Dataset将在Dataset上触发ColumnChanged事件。我的直觉是,它正在您的UI中被拦截,或者在新行被拦截。你能告诉我们你用来改变数值的代码吗。我们可以从这里进行故障排除,因为列是通过XAML绑定到文本框的。我不喜欢UI中数据类型的逻辑。Text={Binding Path=Naziv,UpdateSourceTrigger=PropertyChanged,validatesondaerros=True}老实说,我在以前的项目中做了您想做的事情,编写代码非常困难。结果是您在数据集中的内存中实现了RDBMS。
有时候最好在GUI中捕捉一些愚蠢的东西,或者在一行中提供一个验证函数,但让数据库告诉您什么时候出错。谢谢您的回答。我仍然在学习这些东西,我发现最大的问题是学习什么,在什么情况下使用?。我开始意识到没有银弹。任何地方都有需要作出的妥协。是的,这是真的,我使用了vs拖放功能。让它变得如此简单:。现在我正在学习做事,但我想用正确的方式做事。我想我会选择手动输入数据集。我想我需要这样的回答,非常感谢是的,确实如此,我使用VS拖放功能。让它变得如此简单:。现在我正在学习做事,但我想用正确的方式做事。我想我会选择手动输入数据集。我想我需要这样的回答,非常感谢