Я пытаюсь вставить данные в базу данных и получаю сообщение об ошибке «Строка или двоичный файл будут обрезаны»? - PullRequest
0 голосов
/ 01 октября 2018

Я проверил все длины значений объекта, и я знаю, что это не так.У меня есть данные двух классов, которые я ввожу (продукты питания и клиенты), и я использую один EnsureSeedDataForContext для ввода обоих, и в конце я добавляю оба в базу данных (GoDeliveryContext - это класс, используемый для созданиябаза данных)

например

public static void EnsureSeedDataForContext(this GoDeliveryContext context)
    {     
      var customers = new List<Customer>
        {

            new Customer()
            {
                //CustomerId is created by database
                Name = "Henno",
                Adress = "12 Le Roux Street, Maryland",
                MobileNr = "0876277898",
                CreatedAtDate = new DateTime(2011, 02, 12),
                UpdatedAtDate = new DateTime(2016, 12, 11)
            }
        }  
 var foods = new List<Food>()
        {

            new Food()
            {
              //  FoodId created by the database.
                Name = "Big Mac",
                Description = "The original Big Mac Hamburger",
                Cost = 32,
                RestaurantId = 2,
                CreatedAtDate = new DateTime(2012, 04, 12),
                UpdatedAtDate = new DateTime(2017, 02, 11)
            }
        }
} 
  context.Customers.AddRange(customers); 
  context.Foods.AddRange(foods)  ;

и после этого я сохраняю диапазон

    context.SaveChanges();

public class Customer
{

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CustomerId { get; set; }

    [Required]
    [MaxLength(100)]
    public string Name { get; set; }

    [Required]
    [MaxLength(100)]
    public string Adress { get; set; }

    [Required]
    [MaxLength(10)]
    public string MobileNr { get; set; }

    [Required]
    public DateTime CreatedAtDate { get; set; }

    [Required]
    public DateTime UpdatedAtDate { get; set; }


}

public class Food
{

    [Required]
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int FoodId { get; set; }

    [Required]
    [MaxLength(100)]
    public string Name { get; set; }


    [Required]
    [MaxLength(100)]
    public string Description { get; set; }

    [Required]
    public float Cost { get; set;}

    [Required]
    public int RestaurantId { get; set; }

    [Required]
    public DateTime CreatedAtDate { get; set; }

    [Required]
    public DateTime UpdatedAtDate { get; set; }
}

1 Ответ

0 голосов
/ 01 октября 2018

Хорошо, я нашел проблему.По какой-то причине DateTime изменяется на

DateTime2 (7)

при миграции на базу данных, что приводит к ошибке с введенной датой.Решением для этого является запись конкретной даты, времени и DateTimeKind, например

CreatedAtDate = new DateTime (2018,12,12,10,10,12, DateTimeKind.Local)

Спасибо за помощь!Надеюсь, что это поможет кому-то еще, кто может иметь эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...