0

Я пишу коммерческое приложение и сталкиваюсь с разочаровывающей ошибкой, которая не говорит мне, что такое фактическая ошибка.Ошибка при добавлении товара в базу данных

Error Message Details

Это код, который бежится

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult AddToCart(int product_ID) 
{ 
    if (db.Products.Any(product => product.Product_ID == product_ID)) 
    { 
     //var successfulAddToCart = false; 
     var cartItem = new Cart(); 

     // cartItem.CartID = Guid.NewGuid(); 

     if (Request.IsAuthenticated) 
     { 
      var Customer = db.Customers.FirstOrDefault(customer => customer.Email == User.Identity.Name); 
      cartItem.Customer = Customer; 
      cartItem.CustomerID = Customer.Customer_ID; 
     }      
     else//not logged in, need to remember them somehow 
     { 
      // add a cookie for a guest user so we can save their cart for some time. 
      var CartCookie = new HttpCookie("Cart", Guid.NewGuid().ToString()); 
      CartCookie.Expires.AddDays(2); 
      Request.Cookies.Add(CartCookie); 
      cartItem.Customer = new Customer(); 
      cartItem.CustomerID = null; 
     } 

     //obviously not checked out since we just added to cart 
     cartItem.IsCheckedOut = false; 
     cartItem.Quantity = 1; 
     //one to one with product, so grab the first sku you find. 
     var Sku = db.SKU_Table.SingleOrDefault(sku => sku.Product_ID == product_ID); 
     cartItem.Sku = Sku; 
     cartItem.SkuID = Sku.SKU_ID; 
     //if everything is okay, save the changes to the database 
     if (ModelState.IsValid) 
     { 
      db.Cart.Add(cartItem); 
      db.SaveChanges(); 
     } 


     //return a content string that displays success or failure 
     return Content("Add to cart was successful"); 
    } 
    return Content("Add to cart was not successful");//unsuccessful add 
} 

Теперь, насколько я могу сказать, моя модель прекрасно действует, и я не знаю, что источником проблемы является , Я могу опубликовать значения объекта элемента корзины, если это будет полезно. Сообщение об ошибке действительно не помогает, и я не вижу ничего плохого в моем модели, особенно потому, что он проходит.

Вот телега модель

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Linq; 
using System.Web; 

namespace SeniorProjectMVC.Models 
{ 
    [Table("Cart")] 
    public class Cart 
    { 
     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int ID { get; set; } 
     public Guid CartID { get; set; } 
     public int SkuID { get; set; } 
     public virtual Sku Sku { get; set; } 
     [Required] 
     public int Quantity { get; set; } 
     public int? CustomerID { get; set; } 
     public virtual Customer Customer { get; set; } 
     public bool IsCheckedOut { get; set; } 
    } 
} 
+0

* Атрибут RequiredAttribute указывает, что при проверке поля в форме поле должно содержать значение. Исключение валидации возникает, если свойство равно null, содержит пустую строку ("") или содержит только символы пробела. * .... проверяйте в своей 'else' эту строку кода' cartItem.CustomerID = null; '... измените его на что-то вроде' cartItem.CustomerID = 0; 'и посмотрим, работает ли оно :) – Hackerman

+0

Я пробовал это, и это поле не требуется в базе данных, так как оно является целым числом, равным нулю. Он выводится как нулевое int-поле в моей базе данных. – ddeamaral

+1

Проверка 'if (ModelState.IsValid)' бессмысленна (ваша модель - 'int product_ID'), и нет необходимости устанавливать' cartItem.Customer' и 'cartItem.Sku' свойства (только связанные свойства «CustomerID» и «SkuID»). Вы не установили значение для 'CartID' (вы прокомментировали эту строку), поэтому будет выбрано исключение. –

ответ

0

Я могу видеть, что вы сделали КодКлиент в модели Nullable, но и попробовать сделать ваше поле идентификатора клиента Nullable в вашей базе данных, а также или разрешить поле ID клиента принять нулевые значения.

+0

Я сделал это. Я попытался ввести его с помощью 0 и отправить его со значением null. В моей базе данных, если я расширяю панель столбцов для моей таблицы корзин, она говорит, что мой идентификатор CustomerID является внешним ключом с типом FK, int, null. – ddeamaral

+0

Можете ли вы попробовать это и рассказать мне, какая именно ошибка вы получаете? http://mattrandle.me/viewing-entityvalidationerrors-in-visual-studio/ –

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