#c# #asp.net #entity-framework
#c# #asp.net #entity-framework
Вопрос:
Я хочу добавить данные в базу данных, и я получаю эту ошибку.
В EntityFramework.SQLServer произошло исключение типа ‘System.Data.Entity.Core.EntityException’.dll, но не был обработан в пользовательском коде
Дополнительная информация: Произошла ошибка при запуске транзакции при подключении к провайдеру. Подробности см. во внутреннем исключении.
Вот мой код.
public void alarmlog(int id)
{
AlarmLog log = new AlarmLog();
if (id == 1)
{
log.SectorID = "LRD";
log.LineNo = "L01";
log.WorkStation = "02";
log.LMQS = 1;
log.StaffID = 6;
log.DateTime = DateTime.Now;
}
db.AlarmLogs.Add(log);
db.SaveChanges();
}
Комментарии:
1. Поместите свой код в блок try-catch, чтобы получить сведения о сообщении об ошибке, msdn.microsoft.com/en-us/library/0yd65esw.aspx
2. теперь я знаю, что мой код неисправен, но я понятия не имею, как это исправить
3. сначала поместите снимок экрана внутреннего исключения
4. я пытаюсь добавить некоторые данные в базу данных, у которых есть ID (int), LineNo (строка), WorkStation (строка), LMQS (int), StaffID (int), DateTime (datetime), какова подробная информация о внутреннем исключении. извините, что я задаю такой глупый вопрос. я такой новичок в asp.net mvc razor
5. Если вы просто пытаетесь просмотреть их в редакторе -Visual Studio, при возникновении исключения нажмите «Просмотреть сведения» и разверните исключение, чтобы увидеть InnerException. вы также можете просмотреть это программно:
catch(Exception ex) { Console.WriteLine(ex.InnerException); }
Ответ №1:
У меня есть подозрение, что ваша ошибка находится в вашем if(id==1)
заявлении. Я предполагаю, что вы передаете идентификатор, который не равен 1. Создается новый Alarmlog
, оператор if не возвращает true, а затем вы пытаетесь добавить пустой элемент в базу данных. Если все эти поля, даже одно, если на то пошло, может не быть нулевым, генерируется исключение.
Удалите свой if-блок и посмотрите, исчезла ли ошибка:
public void alarmlog(int id)
{
AlarmLog log = new AlarmLog();
log.SectorID = "LRD";
log.LineNo = "L01";
log.WorkStation = "02";
log.LMQS = 1;
log.StaffID = 6;
log.DateTime = DateTime.Now;
db.AlarmLogs.Add(log);
db.SaveChanges();
}
Если вы хотите, чтобы мы перестали гадать, пожалуйста, сделайте то, что сказали комментаторы: разделите свой код на try { ... } catch(Exception ex) { ... }
блоки, чтобы увидеть, в чем ошибка.
Комментарии:
1. о да, я понял, я просто вставил db.SaveChanges(); в цикл. я вызываю эту функцию в цикле foreach(), поэтому я получил эту ошибку. спасибо за все ответы и помощь 🙂