2012-04-26 5 views
2

В моем приложении asp.net у меня есть две страницы, такие как новые ученики и редактирование студентов. На новой странице студента я передаю общие данные, такие как имя, фамилия, номер мобильного телефона, адрес электронной почты и номер регистра.Если условие с Entity Framework

Здесь 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

REGNO в настоящее время отведенного после создания студенческого по базе данных, это столбец автоматически идентичности , верный? – abatishchev

+0

нет, его добавленный вручную столбец – shanish

+0

Это ключ? Почему бы не сделать это автоматически? – abatishchev

ответ

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

и его работы для меня

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

Заменить studentBeingUpdated с переменной содержащий ссылку на учащегося, который вы сейчас обновляете.

+0

спасибо за ответ ур. Heinzi, я проверю его и дам знать – shanish

+0

его не работает. Я попробовал как и предложил, проверьте мой обновленный вопрос. – shanish

+0

@Shanish: Does StudentId уже содержит действительный стоимость? – Heinzi

1

можно установить на уровне базы данных .. т. Е. Если вы установите автоматическое приращение, вам не нужно редактировать/переназначать идентификатор кому-то другому, и для этого нет необходимости в отдельном управлении.

Пожалуйста, скажите мне, если я понял ошибочно. :)

+0

нет его не столбца автоматического увеличения, его добавлено вручную – shanish