验证使用ADO.net

问题描述:

我需要追加从Excel到数据库中的数据,所以我需要检查验证在Excel列一样,如果dr[0]是数量还是不从Excel导入到数据库,如果在Excel中的任何行,重复的数据库跳过它,只添加新的记录:验证使用ADO.net

MaamoonKhalidIssueEntities db = new MaamoonKhalidIssueEntities(); 
        foreach (DataTable table in result.Tables) 
        { 
         foreach (DataRow dr in table.Rows) 
         { 
          Person addtable = new Person() 
          { 

           nparent =Convert.ToInt32(dr[0]), 
           ncode = Convert.ToString(dr[1]), 
           nname = Convert.ToString(dr[2]) 

          }; 
         db.People.Add(addtable); 
         } 

我不能dr[0]检查,因为其对象

+0

您可以编写一些简单的验证代码。如果您在数据库和Excel中都有密钥,您可以先从Excel中填入一个新的人员,然后您可以比较密钥...? – Joshit

+0

我已经添加了新的人'人addtable =新的Person()'我想检查代码的名称和家长已经在数据库或不 – AShalata

+0

什么名字,什么是家长吗?请记住,你是唯一知道最新情况的人。我只能看到你提供了什么(dr [0])...你应该在将这个人添加到数据库之前检查这个人是否存在。因此,你应该有一些独特的标识符来标识的实体准确.. – Joshit

你可以写一个ValidateNewPerson法。此方法尝试从数据库中获取具有相同ncode的人员。如果成功,该记录是无效的,如果没有,可以添加的人:如果你想使用LINQ的

foreach (DataRow dr in table.Rows) 
{ 
    Person addtable = new Person() 
    { 
     nparent =Convert.ToInt32(dr[0]), 
     ncode = Convert.ToString(dr[1]), 
     nname = Convert.ToString(dr[2]) 
    }; 
    if (ValidateNewPerson(addtable, db)) 
     db.People.Add(addtable); 
}   

public bool ValidateNewPerson(Person newPerson, MaamoonKhalidIssueEntities db) 
{ 
    var dbPerson = db.People.Where(e => e.ncode == newPerson.ncode).FirstOrDefault(); 
    if (dbPerson == null) 
     return true; 
    else 
     return false; 
} 

现在你可以调用这个方法在你的foreach - 方法,您可以使用任何,请求您的数据库中的任何记录是否符合您的条件:

foreach (DataRow dr in table.Rows) 
{ 
    Person addtable = new Person() 
    { 
     nparent =Convert.ToInt32(dr[0]), 
     ncode = Convert.ToString(dr[1]), 
     nname = Convert.ToString(dr[2]) 
    }; 
    if (!db.People.Any(p => p.ncode == addtable.ncode)) 
     db.People.Add(addtable); 
}   
+0

'有通知显示给我**表达式的结果始终是“错误的”,因为bool类型的值等于永远为“零”的'bool' – AShalata

+0

你使用整个表达式的类型:var dbPerson = db.People.Select(e => e.ncode == newPerson.ncode).FirstOrDefault(); – Joshit

+0

选择具有bool作为返回值,FirstOrDefault null或预期的实体 – Joshit