2016-06-22 2 views
0

Я пытаюсь сохранить изменения здесь, и я получаю ошибку исключения на db.SaveChanges(); Я пытаюсь ввести некоторый контент в базу данных и сказать, что он должен быть проверен.Как сохранить изменения в БД для C#

Здесь ошибка:

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

  using (GameConnection db = new GameConnection()) 
      { 

       Game newGame = new Game(); 
       int GameID = 0; 
       if (Request.QueryString.Count > 0) 
       { 
        GameID = Convert.ToInt32(Request.QueryString["gameID"]); 
        newGame = (from game in db.Games 
           where game.gameID == GameID 
           select game).FirstOrDefault(); 
       } 
       newGame.teamA = teamATextBox.Text; 
       newGame.teamB = teamBTextBox.Text; 

       if (GameID == 0) 
       { 
        db.Games.Add(newGame); 
       } 

       db.SaveChanges(); 
       Response.Redirect("~/Default.aspx"); 
      } 
     } 
+3

что такое класс GameConnection? Это не «из коробки» .NET-класс, поэтому мы не знаем, что делает GameConnection или почему это может вызвать ошибку. – JeffFerguson

+1

Опубликовать полную ошибку, то есть вывод вызова 'Exception.ToString()'. Невозможно догадаться, что не так, просто взглянув на код. –

+1

Было бы неплохо, если бы вы могли приложить трассировку стека для получения дополнительной информации об ошибке, которую вы получаете. – MKMohanty

ответ

2

Ошибка о том, что по крайней мере, один из правил проверки не удалось перед отправкой запроса к базе данных.

Что вам нужно сделать, это проверить определение класса для Game (или таблицы базы данных) и проверьте NotNull или других ограничений и проверить, если ваш вклад соответствует всем этим ограничениям по отладке Game объекта перед db.SaveChanges();

Even лучше, добавить улов для печати на Console в Properties несостоявшегося:

using (GameConnection db = new GameConnection()) 
{ 

    Game newGame = new Game(); 
    int GameID = 0; 
    if (Request.QueryString.Count > 0) 
    { 
     GameID = Convert.ToInt32(Request.QueryString["gameID"]); 
     newGame = (from game in db.Games 
        where game.gameID == GameID 
        select game).FirstOrDefault(); 
    } 
    newGame.teamA = teamATextBox.Text; 
    newGame.teamB = teamBTextBox.Text; 

    if (GameID == 0) 
    { 
     db.Games.Add(newGame); 
    } 
    try 
    { 
     db.SaveChanges(); 
    } 
    catch (DbEntityValidationException ex) 
    { 
     foreach (var ve in eve.ValidationErrors) 
     { 
      Console.WriteLine(ve.PropertyName + " " + ve.ErrorMessage); 
     } 
    } 
    Response.Redirect("~/Default.aspx"); 
} 
+0

Может быть, проблема с файлом sql? CREATE TABLE [DBO]. [Game] ( [GameID] INT IDENTITY (300000, 1) NOT NULL, [teamA] VARCHAR (50) NOT NULL, [teamB] VARCHAR (50) NOT NULL, [teamBScore ] VARCHAR (1) NOT NULL, [teamAScore] VARCHAR (1) NOT NULL ); –

+0

Вы не указали в своем коде 'newGame.teamBScore' и' newGame.teamAScore', так что это «null», и у вас есть ограничение «NOT NULL» для этих двух столбцов/свойств. – user3185569

Смежные вопросы