如果条件与实体框架

时间:2012-04-26 08:57:30

标签: c# .net entity-framework

在我的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))
{
}

仍然无法正常工作......

3 个答案:

答案 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!");
 }

它为我工作