在我的asp.net应用程序中,我有两个页面,如新生和编辑学生。在新的学生页面上,我将传递一般信息,如姓名,姓氏,手机号码,电子邮件和注册号码。
RegNo应该是唯一的。我正在使用Entity Framework进行数据库连接。我正在检查条件以避免输入相同的RegNo,例如:
DataObject.Entities dataEntities = new DataObject.Entities();
if (!dataEntities.Students.Any(s => s.RegNo == RegNo))
{
// my code here.
}
当尝试更改RegNo时,编辑选项的方式相同。如果它被分配给其他学生,则不应该进入更新代码。
我知道如果我在这里使用相同的条件,它将会失败,因为RegNo存在于该学生的数据库中(我正在尝试更新),所以如果RegNo被分配给这个特定的学生,而不是其他学生应该被接受,否则应该去其他部分。
我不知道如何使用Entity Framework进行检查。有人可以帮帮我吗?
我有一个列StudentId
,它是一个自动增量列
我试过
if (!dataEntities.Students.Any(s => s.RegNo == RegNo && s.StudentId != StudentId))
{
}
仍然无法正常工作......
答案 0 :(得分:3)
if(!dataEntities.Students.Any(s=>s.RegNo == RegNo && s != studentBeingUpdated))
将studentBeingUpdated
替换为包含对您当前正在更新的学生的引用的变量。
答案 1 :(得分:1)
你可以设置数据库级别..即如果你设置了自动增量,那么你不需要编辑/重新分配id到别人,并且不需要单独管理。
如果我误解了,请告诉我。 :)
答案 2 :(得分:0)
我刚刚为学生表声明了一个对象并尝试了,
DataObject.Student student = dataEntities.Students.First(s => s.StudentId ==
StudentId);
if (!dataEntities.Students.Any(s => s.RegNo == RegNo &&
s.StudentId != student.StudentId))
{
}
else
{
throw new exception("RegNo already exists!");
}
它为我工作