A
A
Andrey Romanyuk2017-02-24 20:27:24
ASP.NET
Andrey Romanyuk, 2017-02-24 20:27:24

An exception of type 'System.Data.Entity.Infrastructure.DbUpdateException' - when saving the database. What to do in my case?

The error itself:
vfl.ru/fotos/2512cee816224034.html
Data in the database ( Order ):
vfl.ru/fotos/11e7374016224035.html
Data in the database ( Cars )
vfl.ru/fotos/898e0ddf16224041.html
HomeController:
namespace WebApplication4.Controllers
{
public class HomeController : Controller
{
// GET: Home
private Models.ShopDBEntities db = new Models.ShopDBEntities();
public ActionResult Index()
{
var Items = db.Cars;
returnView(Items);
}
[HttpPost]
public ActionResult Index(string Name, string Tel, int Car)
{
Order order = new Order
{
UserName = Name,
UserTel = Tel,
CarId = Car,
Status = "Created"
};
db.Orders.Add(order);
db.SaveChanges();
returnView();
}
}
}
Car.cs ( Model ):

public partial class Car
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Type { get; set; }
        public string Description { get; set; }
        public string Preview { get; set; }
        public string SubPreview { get; set; }
        public Nullable<int> count { get; set; }
        public Nullable<int> price { get; set; }
    }

Order.cs ( Model )
public int Id { get; set; }
        public string UserName { get; set; }
        public string UserTel { get; set; }
        public string Status { get; set; }
        public int CarId { get;  set; }

DbContext
namespace WebApplication4.Models
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    
    public partial class ShopDBEntities : DbContext
    {
        public ShopDBEntities()
            : base("name=ShopDBEntities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public virtual DbSet<Car> Cars { get; set; }
        public virtual DbSet<Order> Orders { get; set; }
    }
}

<connectionStrings>
    <add name="BookContext" connectionString="Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Bookstore.mdf;Integrated Security=True; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
    <add name="ShopDBEntities" connectionString="metadata=res://*/Models.ShopDBModel.csdl|res://*/Models.ShopDBModel.ssdl|res://*/Models.ShopDBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\ShopDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

view:
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/_Layout.cshtml";
}


<td class="big_card" colspan="3">
    <form onsubmit="return false" action="/Home/Index" method="POST">
        <fields>
            <p > Оформление заказа</p>
            <input type="text" name="Name" placeholder="Введите ваше имя" required /><br />

            <input type="tel" name="Tel" placeholder="Введите номер телефона в формате 8-ххх-ххх-хххх" required patern="8-[0-9]{3}-[0-9]{3}-[0-9]{4}" /><br />

            <select name="Car" required>
                <option value="1">Ghibili</option>
                <option value="2">Quattroporte</option>
                <option value="3">GranTurismo</option>
            </select><br />
            <input type="submit" />
        </fields>
    </form>
</td>

JS
/*Практика JavaScript*/
function SetIMG(selected_url)
{
   var item = document.getElementById("Preview");
    item.src=selected_url;
}
/*Практика jQuery*/
$(document).ready(function(){
   $('#header').fadeTo(2000,0.3,function(){ 
       $('html, body').animate({ scrollTop: $('#content').offset().top }, 2000);
   });
});
Проверка перед отправкой в бд:
/*Ajax jQuery*/
$(document).on('submit','form',function(){
    
    var UserName=$('input[name=Name]').val();
    var UserTel=$('input[name=Tel]').val();
    var Car=$('select').val();
    //Валидация введенных данных.
    //Проверяем имя
    if(UserName.length>0)
    {
    //Проверяем номер телефона
    var regular=/^\8-[0-9]{3}-[0-9]{3}-[0-9]{4}/;
    if(regular.test(UserTel)==true)
    {
        alert('Всё норм!');
     SubmitForm(UserName,UserTel,Car);
    }
    else
    {
        alert("Вы неверно указали номер телефона");
    }
    }
    else{
        alert("Вы забыли указать имя");
    }
});

/*Ajax jQuery*/
function SubmitForm(name,tel,car)
{
   $.ajax({
  method: "POST",
  url: "/Home/Index",
  data: { Name: name, Tel: tel, Car:car }
})
  .done(function( msg ) {
    alert( "Отлично: " + msg );
  }).fail(function() {
    alert( "При передачи данных произошла ошибка" );
  }); 
}

IIS turned on and off - did not help. IDE: Visual studio 2015, ASP.NET MVC 5, ms sql 2014. The Cars database is filled with goods
Maybe the fact is that Id and CarId are not related to each other? If yes, then how to connect?
vfl.ru/fotos/799f0d4e16224372.html

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Роман, 2017-02-25
@BLek2

В окне исключения нажмите View Details...., чтобы внутреннее исключение посмотреть.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question