验证使用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]
检查,因为其对象
答
你可以写一个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);
}
您可以编写一些简单的验证代码。如果您在数据库和Excel中都有密钥,您可以先从Excel中填入一个新的人员,然后您可以比较密钥...? – Joshit
我已经添加了新的人'人addtable =新的Person()'我想检查代码的名称和家长已经在数据库或不 – AShalata
什么名字,什么是家长吗?请记住,你是唯一知道最新情况的人。我只能看到你提供了什么(dr [0])...你应该在将这个人添加到数据库之前检查这个人是否存在。因此,你应该有一些独特的标识符来标识的实体准确.. – Joshit