Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
Casper-SC
Эксперт .NET
3989 / 1876 / 369
Регистрация: 27.03.2010
Сообщений: 5,225
Записей в блоге: 1
1

Entity Framework 6.0.1. Модель Code First. Не обновляются данные, вылетает исключение

20.04.2014, 01:24. Просмотров 5509. Ответов 5

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsApp_EF_CodeFirst
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new CustomerAndOrderEntities())
            {
                var customer = new Customer { Name = "Алексей" };
                context.Customers.Add(customer);
                context.Orders.Add(new Order { Customer = customer });
                context.SaveChanges();
 
                var queryCustomers = from result in context.Customers
                            select result;
 
                foreach (Customer currentCustomer in queryCustomers)
                {
                    Console.WriteLine("Id = {0,4}; Имя: {1};",
                        currentCustomer.CustomerId, currentCustomer.Name);
                }
 
                var queryOrders = from result in context.Orders
                                     select result;
 
                foreach (Order order in queryOrders)
                {
                    Console.WriteLine("Id = {0,4}; Имя заказчика: {1}; Дата: {2}",
                        order.CustomerId, order.Customer.Name, order.OrderDate);
                }
            }
        }
    }
}
C#
1
2
3
4
5
6
    class CustomerAndOrderEntities : DbContext
    {
        public DbSet<Customer> Customers { get; set; }
 
        public DbSet<Order> Orders { get; set; }
    }
C#
1
2
3
4
5
6
7
8
9
10
    class Order
    {
        public int OrderId { get; set; }
        
        public DateTime OrderDate { get; set; }
 
        public int CustomerId { get; set; }
 
        public Customer Customer { get; set; }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
    class Customer
    {
        public Customer()
        {
            Orders = new HashSet<Order>();
        }
 
        public int CustomerId { get; set; }
 
        public string Name { get; set; }
 
        public HashSet<Order> Orders { get; set; }
    }
Вылетает исключение на строке context.SaveChanges().
Необработанное исключение типа "System.Data.Entity.Infrastructure.DbUpdateException" в EntityFramework.dll

Дополнительные сведения: При обновлении записей возникла ошибка. Дополнительные сведения приведены во внутреннем исключении.
InnerException:
{"При обновлении записей возникла ошибка. Дополнительные сведения приведены во внутреннем исключении."}
InnerException:
{"Преобразование типа данных datetime2 в тип данных datetime привело к выходу значения за пределы диапазона.\r\nВыполнение данной инструкции было прервано."}
Добавлено через 1 минуту
Насчёт даты чего-то не понятно мне в чём там конкретно проблема
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 01:24
Ответы с готовыми решениями:

Entity Framework code first
Доброго времени суток :) Буду краток! БД: MsSql2012 через Entity Framework соединяю с...

Entity Framework( Code First)
Создаю БД из 3-х таблиц. Использую связи один-ко-многим(Department и Employee) и многие-ко...

Firebird and entity framework code first
Всем привет, столкнулся с проблемой: модель пользователя: public class User { ...

Наследование в Entity Framework Code First
Здравствуйте. Разбираюсь с EF:CF, прочитал уже довольно много материала, но все же столкнулся с...

Первые шаги в Code first entity framework
С добрым днём! Попытался создать пробный проект (VS 2010, EF 4.1). Вроде всё пошло, но почему-то...

5
ai-zer
19 / 34 / 11
Регистрация: 09.10.2010
Сообщений: 418
Завершенные тесты: 1
27.05.2014, 10:24 2
Привет, не помнишь в чём было дело?
0
Casper-SC
Эксперт .NET
3989 / 1876 / 369
Регистрация: 27.03.2010
Сообщений: 5,225
Записей в блоге: 1
27.05.2014, 21:41  [ТС] 3
ai-zer, привет. Неа, я забил на EF, так как не было времени разбираться.
0
ai-zer
19 / 34 / 11
Регистрация: 09.10.2010
Сообщений: 418
Завершенные тесты: 1
27.05.2014, 22:04 4
Casper-SC, Ок, забыл отписаться. Проблема была в том, что поле было NotNull, а я заносил пустое значение.
0
kirilovskikh
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 1
17.08.2016, 16:16 5
Цитата Сообщение от Casper-SC Посмотреть сообщение
{"Преобразование типа данных datetime2 в тип данных datetime привело к выходу значения за пределы диапазона.\r\nВыполнение данной инструкции было прервано."}
Нашли решение этой проблемы?
0
lvlkoo
.NET C#,ASP.NET MVC
Эксперт .NET
542 / 464 / 213
Регистрация: 16.10.2010
Сообщений: 1,859
Завершенные тесты: 2
17.08.2016, 22:07 6
Истоки проблемы в том что начальные значения дат в C# и SQL разные.

SQL дата начинает свой отсчет от 01.01.1753, а дата в C# c 01.01.0001
То есть если вы передаете поле с неинициализированной датой, то вы по умолчанию передаете 01 января 0001 года, соостветвенно выскакивает OutOfRange...
Вы можете инициализировать вашу дату в конструкторе

C#
1
2
3
4
public MyEntity()
{
   myDateProperty = new DateTime(1,1,1753);
}
Либо вариант который я больше люблю и использую сделать все даты в сущности nullable

C#
1
public DateTime? Property {get; set;}
2
17.08.2016, 22:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2016, 22:07

Entity Framework Code First Каскадное удаление
Создал базу данных с помощью Entity Framework Code First: namespace Portal.Models { public...

Entity Framework (Code First) использование кириллицы в классе
Добрый вечер. Использую в проекте Entity Framework, подход Code First. БД - MS SQL. Описал...

Вылетает Entity Framework при создании модели
Решил воспользоваться благами автоматического создания моделей из готовой бд и поставил Entity...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru