2

在我的 asp.net 应用程序中,我有两个页面,比如新学生和编辑学生。在新的学生页面上,我传递了一般详细信息,例如名字、姓氏、手机号码、电子邮件和注册号码。

这里的 RegNo 应该是唯一的。我正在使用实体框架进行数据库连接。我正在检查条件以避免输入相同的 RegNo,例如:

DataObject.Entities dataEntities = new DataObject.Entities();

if (!dataEntities.Students.Any(s => s.RegNo == RegNo))
{
    // my code here.
}

尝试更改 RegNo 时,编辑选项的方法相同。如果分配给其他学生,则不应进入更新代码。

我知道如果我在这里使用相同的条件,它会失败,因为 RegNo 存在于该学生的数据库中(正在尝试更新的那个),所以如果 RegNo 分配给这个特定的学生而不是其他学生它应该被接受,否则应该去其他部分。

我不知道如何使用实体框架进行检查。任何人都可以帮助我吗?

我有一列StudentId,它是一个自动增量列

我试过了

if (!dataEntities.Students.Any(s => s.RegNo == RegNo && s.StudentId != StudentId))
{
}

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

4

3 回答 3

3
 if(!dataEntities.Students.Any(s=>s.RegNo == RegNo && s != studentBeingUpdated)) 

替换studentBeingUpdated为包含对您当前正在更新的学生的引用的变量。

于 2012-04-26T09:21:29.430 回答
1

您可以在数据库级别设置.. 即如果您设置自动增量,那么您不需要编辑/重新分配 id 给其他人,也不需要为此单独管理。

如果我理解错误,请告诉我。:)

于 2012-04-26T09:36:23.900 回答
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!");
 }

它为我工作

于 2012-05-22T12:23:56.593 回答