验证表中数据的过程

我在途中

成员
加入
2016年1月18日
消息
12
编程经验
Beginner
嗨伙计们(道歉,如果我在错误的话题发布),

我希望你能帮助我。我对C#开发很新,并真正欣赏您的专业知识。

我想要一个简单的过程/函数我可以调用验证表中的数据:

所以这是需要发生的事情:




  1. 通过桌子循环的程序
  2. 根据某些规则更新某些字段


以下是根据表中的特定字段的值适用的规则的一些示例:



  1. 1.如果[数据]。[finance_project_number] = null /空白
    ?设置[processing_result] = 2
    ?设置[processing_result_text] =?没有项目编号?


    2.如果[数据]。[finance_project_region] = null /空白

    ?设置[processing_result] = 2
    ?设置[processing_result_text] =?没有区域?
    此外,在第2页上,我如何检查有效条目?像?一个?:豪登,自由州,林帕等,如果是?之一?然后它通过,否则;
    ?设置[processing_result] = 2
    ?设置[processing_result_text] =?输入不正确的区域?


    3.CROSS用另一个表格参考客户编号.COLUMN:[数据]。[Customer_Number]存在于[CustomerMaster]中。[Customer_Code]
    如果不:
    ?设置[processing_result] = 2
    ?设置[processing_result_text] =?客户编号不存在?
我提前谢谢你!
 
Last edited:

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,698
地点
悉尼,澳大利亚
编程经验
10+
当你说的时候,你究竟是什么意思"table"?你在谈论数据库表吗? ADO.NET Databable,Typed或Untyped? DataGridView或其他网格控件?别的东西?

基于您所说的内容,我认为您将从循环(for或foreach)开始通过桌子的行。您将为每个规则带来一个方法作为参数,测试它并适当地修改它。然后,您将在循环内部的当前行中调用每个方法,无论是通过调用每个单独方法的另一个方法。
 

我在途中

成员
加入
2016年1月18日
消息
12
编程经验
Beginner
当你说的时候,你究竟是什么意思"table"?你在谈论数据库表吗? ADO.NET Databable,Typed或Untyped? DataGridView或其他网格控件?别的东西?

基于您所说的内容,我认为您将从循环(for或foreach)开始通过桌子的行。您将为每个规则带来一个方法作为参数,测试它并适当地修改它。然后,您将在循环内部的当前行中调用每个方法,无论是通过调用每个单独方法的另一个方法。

我的道歉 - 我有点模糊。

我正在创建一个Windows服务应用程序,在我将一些数据复制到新的SQL表之前,我想在它中创建一个Windows服务应用程序,我想在现有的SQL DB表中验证数据。

我在这方面思考(我只是不知道如何确切地做到这一点):

C#:
        public static void Validate()
        {


            using (var stageContext = new StagingTableDataContext())
            {
                var data = stageContext.ProjectMasters;


                foreach (var sourceDataEntry in data)
                {


                    if (sourceDataEntry.Finance_Project_Number == null)
                    {
                        sourceDataEntry.Processing_Result = 2;
                        sourceDataEntry.Processing_Result_Text = "No Project Number";
                    }
                    else if (sourceDataEntry.Finance_Project_Number == "")
                    {
                        sourceDataEntry.Processing_Result = 2;
                        sourceDataEntry.Processing_Result_Text = "No Project Number";
                    }
                    stageContext.SubmitChanges();


                }
            }
        }
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,698
地点
悉尼,澳大利亚
编程经验
10+
所以你似乎正在使用实体框架或者是linq to sql?这是您应该提供的信息,因为它可能具有实现目标的最佳方式。你建议的基本上是什么。正如我所说,我倾向于为每个规则编写一种方法,但它并不严格必要。
 

我在途中

成员
加入
2016年1月18日
消息
12
编程经验
Beginner
感谢您的帮助 :)

我正在使用linq到sql。这是我到目前为止的目标:

2个问题:

  1. 关于评论部分的任何建议?
  2. 我是否应该宁愿使用存储过程?

C#:
public static void Validate()
        {
            using (var stageContext = new StagingTableDataContext())
            {
                var data = stageContext.ProjectMasters;

                foreach (var sourceDataEntry in data)
                {
                    //Project Number
                    if (sourceDataEntry.Finance_Project_Number == null)
                    {
                        sourceDataEntry.Processing_Result = 2;
                        sourceDataEntry.Processing_Result_Text = "No Project Number";
                        sourceDataEntry.Processed_Datetime = DateTime.Now;
                    }
                    else if (sourceDataEntry.Finance_Project_Number == "")
                    {
                        sourceDataEntry.Processing_Result = 2;
                        sourceDataEntry.Processing_Result_Text = "No Project Number";
                        sourceDataEntry.Processed_Datetime = DateTime.Now;
                    }
                    //Project Type
                    if (sourceDataEntry.Finance_Project_Type == null)
                    {
                        sourceDataEntry.Processing_Result = 2;
                        sourceDataEntry.Processing_Result_Text = "No Project Type";
                        sourceDataEntry.Processed_Datetime = DateTime.Now;
                    }
                    else if (sourceDataEntry.Finance_Project_Type == "")
                    {
                        sourceDataEntry.Processing_Result = 2;
                        sourceDataEntry.Processing_Result_Text = "No Project Type";
                        sourceDataEntry.Processed_Datetime = DateTime.Now;
                    }
                    //Project Region
                    if (sourceDataEntry.Finance_Project_Region == null)
                    {
                        sourceDataEntry.Processing_Result = 2;
                        sourceDataEntry.Processing_Result_Text = "No Project Type";
                        sourceDataEntry.Processed_Datetime = DateTime.Now;
                    }
                    else if (sourceDataEntry.Finance_Project_Region == "")
                    {
                        sourceDataEntry.Processing_Result = 2;
                        sourceDataEntry.Processing_Result_Text = "No Project Region";
                        sourceDataEntry.Processed_Datetime = DateTime.Now;
                    }
                    //if (sourceDataEntry.Finance_Project_Region != "Gauteng") ||
                    //        (sourceDataEntry.Finance_Project_Region != "Free State") ||
                    //        (sourceDataEntry.Finance_Project_Region != "Limpopo") ||
                    //        (sourceDataEntry.Finance_Project_Region != "Kwazulu Natal") ||
                    //        (sourceDataEntry.Finance_Project_Region != "Western Cape");
                    //{
                    //    sourceDataEntry.Processing_Result = 2;
                    //    sourceDataEntry.Processing_Result_Text = "Incorrect Province";
                    //    sourceDataEntry.Processed_Datetime = DateTime.Now;
                    //}

                    stageContext.SubmitChanges();

                }
            }
        }
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,698
地点
悉尼,澳大利亚
编程经验
10+
当你可能猜到的那样,评论部分是错误的。您需要和这些条件,而不是或它们。也就是说,您可以将所有值放入数组并呼叫包含一次。

如果你想要但没有真正需要,你可以。在我的脑海里,使用ORM倾向于倾向于不使用SPROC。
 

我在途中

成员
加入
2016年1月18日
消息
12
编程经验
Beginner
谢谢!

我试过了&& but get a message "表达术语无效" - 对我做错了什么建议吗?
我做了一些光线阅读(快速),似乎小吃并不总是走的方式。此外,这个应用程序不是一个大应用程序,所以我选择的方法很好。


 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,698
地点
悉尼,澳大利亚
编程经验
10+
1. I have tried && but get a message "表达术语无效" - 对我做错了什么建议吗?
您需要删除所有打开和关闭括号,只需在一个设置中包装整个布尔表达式,或者在额外的括号中留下您拥有的内容并包装很多。此外,在最后一个括号后摆脱分号。
我做了一些光线阅读(快速),似乎小吃并不总是走的方式。此外,这个应用程序不是一个大应用程序,所以我选择的方法很好。
作为应用程序开发人员,Sprocs通常应该是您的最后选择。来自DBA的透视的人经常更喜欢它们,因为他们喜欢在数据库中拥有尽可能多的逻辑。应用程序开发人员通常具有相反的方法,因为数据库中的逻辑难以处理几个原因。我倾向于将SPRoC用于重型数据库工作,他们提供了重要的性能提升。
 

我在途中

成员
加入
2016年1月18日
消息
12
编程经验
Beginner
您需要删除所有打开和关闭括号,只需在一个设置中包装整个布尔表达式,或者在额外的括号中留下您拥有的内容并包装很多。此外,在最后一个括号后摆脱分号。

谢谢 - 这是作品!

作为应用程序开发人员,Sprocs通常应该是您的最后选择。来自DBA的透视的人经常更喜欢它们,因为他们喜欢在数据库中拥有尽可能多的逻辑。应用程序开发人员通常具有相反的方法,因为数据库中的逻辑难以处理几个原因。我倾向于将SPRoC用于重型数据库工作,他们提供了重要的性能提升。

注意到 - 谢谢你的提示! :喜极而泣:
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,698
地点
悉尼,澳大利亚
编程经验
10+
如何标记答案的线程?

编辑第一个帖子并更改要回答的前缀。除非这不是一个问题,否则这是一个很好的想法。
 
最佳 底部