Я разрабатываю сайт asp.net с использованием типизированного набора данных как DAL, все отлично работает до сегодняшнего дня я не собирался, чтобы добавить некоторые новые функциональные возможности на мой сайт вот аннотация:В чем причина странного поведения типизированного набора данных?
прибудет сумма от amount_field из user_table и рассчитать что-то обновит user_table
вот мой SQL запрос для получения amount_field в типизированного набора данных:
select userId , Amount from [user] WHERE [email protected]
Я назвал этот запрос: getUserCreditByID (@userid)
и в моем BLL я называю этот запрос таким следующим образом:
public static int getuseramount(long id)
{
int amount = 0;
userTableAdapters.userTableAdapter usert = new userTableAdapters.userTableAdapter();
user.userDataTable userd = usert.GetUserCreditByID(id);
foreach (user.userRow R in userd)
{
amount = R.Amount;
}
usert.Dispose();
userd.Dispose();
return amount;
}
и когда я вызываю эту функцию, я получаю эту ошибку:
Не удалось включить ограничения. Один или строк содержат значения, нарушающие непустые, уникальные или внешние ключи .
, но когда я изменить SQL запрос Дал в в этом:
SELECT userID, username, password, address1, address2, tel1, tel2, cell, active, email, showEmail, last_login, Amount, registerdate, websiteUrl, vote, registerIP, city,
firstname, lastname
FROM [user]
WHERE (userID = @userid)
все работает отлично
Я ошеломленно об этом, в чем проблема?
Я думаю, это единственный ответ . Есть некоторые проблемы с типизированным набором данных, но они облегчают мою жизнь, поэтому мне больше не нужно писать DAL –
. Другая альтернатива (если у вас есть контроль над DataSet) создать целенаправленную таблицу в вашем DataSet, используя только нужные вам поля. –