При обновлении записей возникла ошибка дополнительные сведения приведены во внутреннем исключении

Entity Framework 6.0.1. Модель Code First. Не обновляются данные, вылетает исключение C# Решение и ответ на вопрос 1151950

Casper-SC

Эксперт .NET

4430 / 2090 / 404

Регистрация: 27.03.2010

Сообщений: 5,657

Записей в блоге: 1

1

20.04.2014, 01:24. Показов 9431. Ответов 5

Метки code first, entity, update (Все метки)


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.DbUpdateExcepti on» в EntityFramework.dll

Дополнительные сведения: При обновлении записей возникла ошибка. Дополнительные сведения приведены во внутреннем исключении.

InnerException:

{«При обновлении записей возникла ошибка. Дополнительные сведения приведены во внутреннем исключении.»}

InnerException:

{«Преобразование типа данных datetime2 в тип данных datetime привело к выходу значения за пределы диапазона.rnВыполнение данной инструкции было прервано.»}

Добавлено через 1 минуту
Насчёт даты чего-то не понятно мне в чём там конкретно проблема



0



19 / 34 / 11

Регистрация: 09.10.2010

Сообщений: 420

27.05.2014, 10:24

2

Привет, не помнишь в чём было дело?



0



Эксперт .NET

4430 / 2090 / 404

Регистрация: 27.03.2010

Сообщений: 5,657

Записей в блоге: 1

27.05.2014, 21:41

 [ТС]

3

ai-zer, привет. Неа, я забил на EF, так как не было времени разбираться.



0



19 / 34 / 11

Регистрация: 09.10.2010

Сообщений: 420

27.05.2014, 22:04

4

Casper-SC, Ок, забыл отписаться. Проблема была в том, что поле было NotNull, а я заносил пустое значение.



0



0 / 0 / 0

Регистрация: 27.06.2015

Сообщений: 1

17.08.2016, 16:16

5

Цитата
Сообщение от Casper-SC
Посмотреть сообщение

{«Преобразование типа данных datetime2 в тип данных datetime привело к выходу значения за пределы диапазона.rnВыполнение данной инструкции было прервано.»}

Нашли решение этой проблемы?



0



lvlkoo

.NET C#,ASP.NET MVC

Эксперт .NET

592 / 503 / 225

Регистрация: 16.10.2010

Сообщений: 1,902

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



Всем привет, 3 вопроса:

1.такая проблема. EF последняя версия. Visual Studio. Создал простую базу данных. Создал модель. Создал таблицу. Через код добавляю в таблицу данные. Одну строчку он добавляет. Но вот как впишу еще одну например с названием «bu2» то уже ошибка на моменте db.SaveChanges();

System.Data.Entity.Infrastructure.DbUpdateException: «При обновлении записей возникла ошибка. Дополнительные сведения приведены во внутреннем исключении.»

SqlException: Violation of PRIMARY KEY constraint ‘PK__Buffet__3214EC070BE69470’. Cannot insert duplicate key in object ‘dbo.Buffet’. The duplicate key value is (0).
The statement has been terminated.

2.Даже когда на одной строке срабатывает, я открываю таблицу, там нету записанных данных, получается что база данных ничего не записывает?

3.Почему в db. я уже нахожу свою таблицу во множественном числе с буквой s на конце?

class Program
{
    static void Main(string[] args)
    {
        Database1Entities db = new Database1Entities();

        var query = from t in db.Buffets select t;



        Buffet bu1 = new Buffet { MarketCap = 651616556, Index = "fesfs", 
        TotalDebt = 56156 };

        db.Buffets.Add(bu1);

        db.SaveChanges();

        foreach (var item in query)
        {
            Console.WriteLine(item.MarketCap);
        }

        Console.ReadKey();
    }
}

Вот так решается проблема, не хочет автоматом Id прописывать, но второй
вопрос остается все еще открытым.

static void Main(string[] args)
{
    using (Database1Entities db1 = new Database1Entities())
    {
        Buffet bu1 = new Buffet { Id = 0, MarketCap = 651616556, Index = 
       "SP500", TotalDebt = 79994};
        Buffet bu2 = new Buffet { Id = 1, MarketCap = 657145, Index = 
       "Dow30", TotalDebt = 582166 };
        Buffet bu3 = new Buffet { Id = 2, MarketCap = 157212, Index = 
         "NASDAQ", TotalDebt = 1298974 };
        db1.Buffets.Add(bu1);
        db1.Buffets.Add(bu2);
        db1.Buffets.Add(bu3);

        db1.SaveChanges();

        var query = from t in db1.Buffets select t;

        foreach (var item in query)
        {
            Console.WriteLine(item.MarketCap);
            Console.WriteLine(item.TotalDebt);
        }
    }
    Console.ReadKey();
}

покажите как у вас объявлен Buffet.

PashaPash Если вы вот это имеете ввиду, то вот так:

 public virtual DbSet<Buffet> Buffets { get; set; }

Автоматом при создание модели генерирует.

что проверяете именно в той базе?

Захожу в таблицу Buffet, а там всюду null, после отладки не сохраняются данные.

как именно у вас база подключена?

Она подключена обычно:) не знаю как точно ответить. Создал простую базу в VS, создал модель. На ней зеленая розетка, но при запуске отладки загорается крестик красные, может она просто отключается на отладку. Нашел тут на форму ответ, что нужно поставить if newer в свойствах базы данных. Я та понял это в свойствах базы данных, у меня рус. версия. Как я понял это связано с «Копировать в выходной каталог», но переключая там на разные вкладки снова ошибка на SaveChages().

У меня проблема, я только начал изучать модель EF, и я остаюсь в одной точке в течение некоторого времени. Я получил такую ошибку:

» при обновлении записей произошла ошибка. См. внутреннее исключение для деталей»

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

Я публикую скриншот с диаграммой / сгенерированной DLL / простой основной / и ошибка метания

model and stuff

Ссылка для большего размера:http://i.imgur.com/bKGc4wv.png

7 ответов


повернуть Pluralization On. Проблема в том, что вы моделируете объект, используя единственное имя (Pupil) соглашение, в то время как в вашей базе данных вы используете несколько имен Pupils С s.

обновление

этой в должности показывает, как вы можете включить его или выключить.
Некоторые соответствующие выдержки из этого поста:

для включения и выключения плюрализации

  • в меню Сервис выберите Опции.

  • в диалоговом окне Параметры разверните узел базы данных.
    Примечание: выберите Показать все параметры, если узел инструменты базы данных не отображается.

  • Нажмите O/R Designer.

  • установите Плюрализацию имен в Enabled = False для установки конструктора O/R, чтобы он не изменял имена классов.

  • установите Плюрализацию имен в Enabled = True, чтобы применить правила плюрализации к именам классов объекты, добавленные в реляционный конструктор объектов.

обновление 2

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

(…) при первом подходе к коду Entity Framework таблицы базы данных создаются из классов моделей. Обычно Entity Framework создает таблицы с несколькими именами. это означает, что если у вас есть класс модели PhoneNumber, Entity framework создаст таблицу для этого класса под названием «PhoneNumbers». Если вы хотите избежать множественного имени и хотите единственное имя, как клиент , вы можете сделать это так
В вашем классе DBContext переопределите метод «OnModelCreating» следующим образом (…)

enter image description here

(…) переопределение этого метода позволит избежать создания таблиц с множественными именами. Теперь он создаст Таблица называется «PhoneNumber», а не» PhoneNumbers»(…)


Это может быть причиной преобразования данных из .net в sql. например, ошибка преобразования datetime.

вообще это не точная ошибка. вы можете увидеть точную ошибку в watch at exception.Свойство innerexception.InnerException — > ResultView.

для меня это была пустая ссылка на столбец datetime


Я столкнулся с той же ошибкой:

» при обновлении записей произошла ошибка. См. внутреннее исключение
для детали»

просто удалить и заново создать *.файл edmx. Это сработало для меня. ошибка исчезнет


недавно у меня была эта проблема.
Это произошло, потому что разрешения пользовательской базы данных.
проверьте разрешения базы данных пользователя, возможно, у пользователя нет разрешения на запись в БД.


я столкнулся с той же проблемой, и не вышеперечисленные решения помогли мне. В моем Web Api 2 проект, я фактически обновил свою базу данных и разместил unique constraint на SQL table column. это действительно было причиной проблемы. Просто проверка повторяющихся значений столбцов перед вставкой помогла мне устранить проблему!


для записи у меня была эта проблема и была глупая ошибка с моей стороны. Моей проблемой было несоответствие типов данных.
Тип данных в таблице базы данных и классах C# должен быть одинаковым……


моя проблема заключалась в том, что идентификатор таблицы не является AUTO_INCREMENT, и я пытался добавить диапазон.


Необработанное исключение типа
«System.Data.Entity.Infrastructure.DbUpdateException» в
EntityFramework.dll

Дополнительные сведения: При обновлении записей возникла ошибка.
Дополнительные сведения приведены во внутреннем исключении.

Может дело в самой бд? Как посмотреть внутренние исключения?

using System.Linq;
using System.Windows;


namespace EntityLast
{

public partial class Window2 : Window
{
    StudentsandGroupEntities db;
    Student item;

    public Window2()
    {

        InitializeComponent();
    }

    public Window2(StudentsandGroupEntities db)
    {
        InitializeComponent();

        Title = "Добавление";
        this.db = db;
    }

    public Window2(Student item, StudentsandGroupEntities db)
    {
        InitializeComponent();
        db = new StudentsandGroupEntities();
        var l = db.Students.ToList();

        this.DataContext = l;
        this.comboBox.ItemsSource = db.Groups.ToList();

        Title = "Редактирование";
        this.item = item;
        this.db = db;
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        textBox.Text = item?.IDStudent.ToString();
        textBox1.Text = item?.Surname.ToString();
        textBox2.Text = item?.Name.ToString();
        textBox3.Text = item?.AddName.ToString();
        LoadComboBoxData();
    }


    public void LoadComboBoxData()
    {
        comboBox.ItemsSource = db.Groups.ToList();
        comboBox.SelectedValue = item != null ? item.IDGroup : 0;
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {

            if (item != null)//редактирует
            {
                var row = db.Students.Where(s => s.IDStudent == item.IDStudent).FirstOrDefault();
                // row.IDStudent = Convert.ToInt32(textBox.Text);
                row.Surname = textBox1.Text;
                row.Name = textBox2.Text;
                row.AddName = textBox3.Text;
                row.IDGroup = int.Parse(comboBox.SelectedValue.ToString());
                db.SaveChanges();
            }
            else
            {
                var row = new Student()//добавляет
                {
                    // IDStudent = Convert.ToInt32(textBox.Text),
                    Surname = textBox1.Text,
                    Name = textBox2.Text,
                    AddName = textBox3.Text,
                    IDGroup = int.Parse(comboBox.SelectedValue.ToString())
                };
                db.Students.Add(row);
                db.SaveChanges();//ошибка здесь

            }
        }
    }
}

Дело оказалось действительно в самой бд, надо заполнять все поля в базе, которые NOT NULL, либо все менять на NULL, кроме айдишника

Ошибка объекта данных «Ошибка при обновлении записей. Подробнее см. Внутреннее исключение».

Вопрос:

Я новичок в Entity Framework, я уже искал в google для этой проблемы, но ничего не нашел. Я получаю ошибку

При обновлении записей произошла ошибка. Подробнее см. Внутреннее исключение.

и когда я проверил внутреннее исключение, я вижу это

Невозможно вставить значение NULL в столбец “DOCNUM”, таблицу “TCPIDBV2.dbo.tbl_200_Dailyreport”; столбец не допускает нулей. INSERT терпит неудачу.

Но когда я проверил записи, которые я передал для сохранения в базе данных, в этом объекте есть значение, называемое “DOCNUM”,

Это мой код:

[Table("tbl_200_Dailyreport")]
public class tbl_200_Dailyreport
{
[Key]
[Required]
public long DOCNUM {get; set;}
public DateTime DAILYREPDATE {get; set;}
public string SECTION {get; set;}
public string REMARKS { get; set; }
public int? OPERATIONTIME { get; set; }
public int? PREPARATIONTIME { get; set; }
public int? STANDBYTIME { get; set; }
public int? MATERIALWAITING { get; set; }
public int? ASSISTTIME { get; set; }
public int? MAINTENANCETIME { get; set; }
public int? CLEANINGTIME { get; set; }
public bool? ISOVERTIME { get; set; }
public bool? ISLOCKED { get; set; }
public string SHIFT { get; set; }
public int? PRODTIME { get; set; }
public int? BREAKTIME { get; set; }
public double? TOTALCOLOR { get; set; }
public double? AVERAGECOLOR { get; set; }
}

При получении значения вышеприведенного здесь приведен код:

tbl_200_Dailyreport.DOCNUM = long.Parse(txtReferenceNo.Text);
tbl_200_Dailyreport.PRODTIME = Convert.ToInt32(txtProduction.Text);
tbl_200_Dailyreport.OPERATIONTIME = Convert.ToInt32(txtOperation.Text);
tbl_200_Dailyreport.PREPARATIONTIME = Convert.ToInt32(txtPreparation.Text);
tbl_200_Dailyreport.STANDBYTIME = Convert.ToInt32(txtStandby.Text);
tbl_200_Dailyreport.MAINTENANCETIME = Convert.ToInt32(txtMaintenance.Text);
tbl_200_Dailyreport.CLEANINGTIME = Convert.ToInt32(txtCleaning.Text);
tbl_200_Dailyreport.MATERIALWAITING = Convert.ToInt32(txtMaterial.Text);
tbl_200_Dailyreport.ASSISTTIME = Convert.ToInt32(txtAssist.Text);
tbl_200_Dailyreport.BREAKTIME = Convert.ToInt32(txtOthers.Text);
tbl_200_Dailyreport.DAILYREPDATE = dtpDailyReportDate.Value;
tbl_200_Dailyreport.SHIFT = cboShift.SelectedValue.ToString();
tbl_200_Dailyreport.ISOVERTIME = cbxOvertime.Checked;
tbl_200_Dailyreport.ISLOCKED = false;
tbl_200_Dailyreport.REMARKS = txtRemarks.Text;

if (!String.IsNullOrEmpty(cboSecDepartment.Text))
{
tbl_200_Dailyreport.SECTION = cboSecDepartment.SelectedValue.ToString();
}
else
{
var section = "0";
tbl_200_Dailyreport.SECTION = section;
}

Я разрешаю всем столбцам значение null, за исключением PK, называемого “DOCNUM”, поэтому при получении значения “DOCNUM”, где txtreferenceno.Text имеет значение, равное 1. и передал его в DailyReportManager, так вот код:

public void Save(tbl_200_Dailyreport records)
{
try
{
this.db.tbl_200_Dailyreport.Add(records);
this.db.SaveChanges();
}
catch (Exception ex)
{
throw ex;
}
}

и в получении значения txtreferenceno.Text

var max = dailyreportmanager.FindAll().Max(x => (int?)x.DOCNUM) ?? 0;
var addMax = max + 1;
txtReferenceNo.Text = Convert.ToString(addMax);

поэтому для дизайна моей базы данных

Позвольте мне опубликовать снимок экрана:

Дизайн базы данных

Когда я проверил записи, значение “DOCNUM” имеет значение, равное единице, но почему я все еще получаю эту ошибку? Пожалуйста помоги. Большое спасибо заранее.

Лучший ответ:

Чтобы указать Entity Framework, которую вы хотите вручную указать значение ключа, укажите этот атрибут:

[DatabaseGenerated(DatabaseGeneratedOption.None)]

против DOCNUM.

#c# #asp.net-mvc-5 #relational-database #entity-framework-migrations

#c# #asp.net-mvc-5 #реляционная база данных #entity-framework-миграции

Вопрос:

Недавно я пытался удалить поле из своей базы данных, и теперь каждый раз, когда я пытаюсь запустить Update-database , я получаю эту ошибку:

При обновлении записей произошла ошибка. Подробности см. Во внутреннем исключении.

Полное описание ошибки здесь
Таблица Sql

Я использовал

 Enable-Migrations -ContextTypeName ArtistDatabase.Models.ArtistDBContext 

Add-Migration Initial 

Update-database.
  

Artist.Cs

 using System;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

namespace ArtistDatabase.Models
{
public class Artist
{
    public int ID { get; set; }
    //----------------------------------------------------------------------------------------------
    [Required,StringLength(60, MinimumLength = 3), Display(Name = "Artist")]
    public string Name { get; set; }
    //----------------------------------------------------------------------------------------------
    [DataType(DataType.ImageUrl)]
    public string Picture { get; set; }
    //----------------------------------------------------------------------------------------------
    [Display(Name = "Date of Birth"),DataType(DataType.Date),DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
    public DateTime BirthDate { get; set; }
    //----------------------------------------------------------------------------------------------
    [Required,StringLength(30)]
    public string Nationality { get; set; }
    //----------------------------------------------------------------------------------------------
    [Display(Name = "Art Style/Movement")]
    public string ArtStyle { get; set; }
    //----------------------------------------------------------------------------------------------
    [DataType(DataType.MultilineText)]
    public string Info { get; set; }
    //----------------------------------------------------------------------------------------------
    [RegularExpression(@"^[A-Z] [a-zA-Z''-'s]*$")]
    [StringLength(5)]
    public string Rating { get; set; }
    //----------------------------------------------------------------------------------------------
    [Display(Name = "Famous work: "),DataType(DataType.ImageUrl)]
    public string Artwork1 { get; set; }
    //----------------------------------------------------------------------------------------------
    [Display(Name = " "), DataType(DataType.ImageUrl)]
    public string Artwork2 { get; set; }
    //----------------------------------------------------------------------------------------------
    [Display(Name = " "), DataType(DataType.ImageUrl)]
    public string Artwork3 { get; set; }
}

public class ArtistDBContext : DbContext
{
    public DbSet<Artist> Artists { get; set; }
}
}
  

Конфигурация.Cs (начальный метод)

  namespace ArtistDatabase.Migrations
{
using Models;
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;

internal sealed class Configuration : DbMigrationsConfiguration<ArtistDatabase.Models.ArtistDBContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }

    protected override void Seed(ArtistDatabase.Models.ArtistDBContext context)
    {
        context.Artists.AddOrUpdate(i => i.Name,
            new Artist
            {
                Name = "Pablo Ruiz y Picasso",
                Picture = "http://a5.files.biography.com/image/upload/c_fit,cs_srgb,dpr_1.0,h_1200,q_80,w_1200/MTE1ODA0OTcxNzU0MDk2MTQx.jpg",
                BirthDate = DateTime.Parse("25-10-1881"),
                Nationality = "Spanish",
                ArtStyle = "Cubism, Surrealism",
                Info = "Picasso was a Spanish painter, sculptor and ceramicist, among other things. He spent most of his adult life in France, "  
                "and is regarding as one of the greatest and most influential artists of the 20th century. He is known as co-founding of the"  
                " 'Cubist' movement; the invention of constructed sculpture, also being the co-inventor of collage, and for the wide variety"  
                " of styles that he helped develop and explore. Picasso, Henri Matisse and Marcel Duchamp are regarded as the three artists"  
                " who most defined the revolutionary developments in the plastic arts in the opening decades of the 20th century, responsible"  
                " for significant developments in painting, sculpture, printmaking and ceramics. Picasso demonstrated extraordinary artistic"  
                " talent in his early years, painting in a naturalistic manner through his childhood and adolescence.During the first decade"  
                " of the 20th century, his style changed as he experimented with different theories, techniques, and ideas.His work is often"  
                " categorized into periods.While the names of many of his later periods are debated, the most commonly accepted periods in his"  
                " work are the Blue Period(1901–1904), the Rose Period(1904–1906), the African - influenced Period(1907–1909),"  
                " Analytic Cubism(1909–1912),and Synthetic Cubism(1912–1919),also referred to as the Crystal period. Exceptionally prolific"  
                " throughout the course of his long life, Picasso achieved universal renown and immense fortune for his revolutionary artistic"  
                " accomplishments, and became one of the best - known figures in 20th - century art.",
                Rating = "",
                Artwork1 = "https://mocochocodotcom.files.wordpress.com/2013/11/how-to-recognize-painters-by-their-work-picasso2.jpg",
                Artwork2 = "http://paintingandframe.com/uploadpic/pablo_picasso/big/les_demoiselles_d_avignon_c_1907.jpg",
                Artwork3 = "http://www.themost10.com/wp-content/uploads/2012/03/Blue-Nude-By-Pablo-Picasso.jpg?09df94"
            },

            new Artist
            {
                Name = "Leonardo da Vinci",
                Picture = "http://www.leonardodavinci.net/images/leonardo-da-vinci.jpg",
                BirthDate = DateTime.Parse("15-04-1452"),
                Nationality = "Italian",
                ArtStyle = "High Renaissance",
                Info = "Leonardo di ser Piero da Vinci was an Italian polymath whose areas of interest included invention, painting,"  
                " sculpting, architecture, science, music, mathematics, engineering, literature, anatomy, geology, astronomy, botany, writing, history,"  
                " and cartography. He has been variously called the father of palaeontology, ichnology, and architecture, and is widely considered one"  
                " of the greatest painters of all time. Sometimes credited with the inventions of the parachute, helicopter and tank, he epitomised"  
                " the Renaissance humanist ideal.Many historians and scholars regard Leonardo as the prime exemplar of the 'Universal Genius' or "  
                "'Renaissance Man', an individual of 'unquenchable curiosity' and 'feverishly inventive imagination'. According to art historian Helen"  
                " Gardner, the scope and depth of his interests were without precedent in recorded history, and 'his mind and personality seem to us"  
                " superhuman, while the man himself mysterious and remote'. Marco Rosci notes that while there is much speculation regarding his life"  
                " and personality, his view of the world was logical rather than mysterious, and that the empirical methods he employed were unorthodox"  
                "for his time. Leonardo was, and is, renowned primarily as a painter. Among his works, the Mona Lisa is the most famous and most"  
                " parodied portrait and The Last Supper the most reproduced religious painting of all time, their fame approached only by Michelangelo's"  
                " The Creation of Adam. Leonardo's drawing of the Vitruvian Man is also regarded as a cultural icon, being reproduced on items as"  
                " varied as the euro coin, textbooks, and T-shirts. Perhaps fifteen of his paintings have survived. Nevertheless, these few works,"  
                " together with his notebooks, which contain drawings, scientific diagrams, and his thoughts on the nature of painting, compose a"  
                " contribution to later generations of artists rivalled only by that of his contemporary, Michelangelo.",
                Rating = "",
                Artwork1 = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg/402px-Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg",
                Artwork2 = "https://upload.wikimedia.org/wikipedia/commons/2/23/Leonardo_da_Vinci_-_Last_Supper_(copy)_-_WGA12732.jpg",
                Artwork3 = "http://blog.world-mysteries.com/wp-content/uploads/2011/01/vitruvian_man_mixed.jpg"
            },

            new Artist
            {
                Name = "Georgia O'Keeffe",
                Picture = "http://1874.img.pp.sohu.com.cn/images/blog/2008/11/16/20/26/11e4d90ce26g213.jpg",
                BirthDate = DateTime.Parse("15-11-1887"),
                Nationality = "American",
                ArtStyle = "American Modernism",
                Info = "Georgia Totto O'Keeffe was an American artist. She is best known for her paintings of enlarged flowers, New York skyscrapers,"  
                " and New Mexico landscapes. O'Keeffe has been recognized as the 'Mother of American modernism'. O'Keeffe studied at the School of the"  
                " Art Institute of Chicago from 1905 to 1906. In 1907, she attended the Art Students League in New York City, where she studied under"  
                " William Merritt Chase. In 1908, she won the League's William Merritt Chase still-life prize for her oil painting Dead Rabbit with"  
                " Copper Pot. Her prize was a scholarship to attend the League's outdoor summer school in Lake George, New York. While in the city"  
                " in 1908, O'Keeffe attended an exhibition of Rodin's watercolors at the gallery 291, owned by her future husband, photographer Alfred"  
                " Stieglitz. O'Keeffe abandoned the idea of pursuing a career as an artist in late 1908, claiming that she could never distinguish"  
                " herself as an artist within the mimetic tradition which had formed the basis of her art training. She took a job in Chicago as"  
                " a commercial artist. She did not paint for four years, and said that the smell of turpentine made her sick. She was inspired to"  
                " paint again in 1912, when she attended a class at the University of Virginia Summer School, where she was introduced to the innovative"  
                " ideas of Arthur Wesley Dow by Alon Bement. Dow encouraged artists to express themselves using line, color, and shading"  
                " harmoniously. From 1912-14, she taught art in the public schools in Amarillo in the Texas Panhandle. She attended Teachers College"  
                " of Columbia University from 1914–15, where she took classes from Dow, who greatly influenced O'Keeffe's thinking about the process of"  
                " making art. She served as a teaching assistant to Bement during the summers from 1913–16 and taught at Columbia College, Columbia,"  
                " South Carolina in late 1915, where she completed a series of highly innovative charcoal abstractions. After further course work at"  
                " Columbia in early 1916 and summer teaching for Bement, she took a job as head of the art department at West Texas State Normal College"  
                " from late 1916 to February 1918, the fledgling West Texas Aamp;M University in Canyon just south of Amarillo. While there, she often"  
                " visited the Palo Duro Canyon, making its forms a subject in her work.",
                Rating = "",
                Artwork1 = "http://www.georgiaokeeffe.net/images/paintings/rams-head.jpg",
                Artwork2 = "https://learnodo-newtonic.com/wp-content/uploads/2015/09/Red-Canna-1924-Georgia-OKeeffe.jpg",
                Artwork3 = "http://www.themasterpiececards.com/hs-fs/hub/40667/file-25876050-jpg/images/okeeffe_jack_2_from_nga-resized-600.jpg?t=1465250810631"
            },

            new Artist
            {
                Name = "Vincent van Gogh",
                Picture = "http://site.artsheaven.com/blog/wp-content/uploads/2015/10/vincent.jpg",
                BirthDate = DateTime.Parse("30-03-1853"),
                Nationality = "Dutch",
                ArtStyle = "Post-Impressionism",
                Info = "Vincent Willem van Gogh was a Dutch painter who is among the most famous and influential figures in the history of Western art."  
                " In just over a decade he created about 2100 artworks, including around 860 oil paintings, most of them in the last two years of his"  
                " life. They include landscapes, still lifes, portraits and self-portraits, and are characterised by bold, symbolic colours, and"  
                " dramatic, impulsive and highly expressive brushwork that contributed to the foundations of modern art. He sold only one painting"  
                " during his lifetime and became famous after his suicide at age 37, which followed years of poverty and mental illness. Van Gogh's"  
                " early works, mostly still lifes and depictions of peasant labourers, contain few signs of the vivid colour that distinguished his"  
                " later work. In 1886 he moved to Paris and discovered the French Impressionists. As his work developed he created a new approach to"  
                " still lifes and local landscapes. His paintings grew brighter in colour as he developed a style that became fully realised during his"  
                " stay in Arles in the south of France in 1888. He lived there in the Yellow House and, with the French artist Paul Gauguin, developed a"  
                " concept of colour that symbolised inner emotion. During this period he broadened his subject matter to include olive trees, cypresses,"  
                " wheat fields and sunflowers. In Nuenen, Van Gogh focused on painting and drawing. Working outside and very quickly, he completed"  
                " sketches and paintings of weavers and their cottages. In August 1884, Margot Begemann, a neighbour's daughter and ten years"  
                " his senior, began joining him on his painting forays; she fell in love, and he reciprocated, though less enthusiastically. They"  
                " decided to marry, but the idea was opposed by both families, following which Margot took an overdose of strychnine. She was saved"  
                " when Van Gogh rushed her to a nearby hospital. On 26 March 1885, his father died of a heart attack. Van Gogh painted several"  
                "groups of still lifes in 1885. During his two - year stay in Nuenen, he completed numerous drawings and watercolours, and nearly"  
                "200 oil paintings.His palette consisted mainly of sombre earth tones, particularly dark brown, and showed no sign of the vivid colours"  
                "that distinguish his later work.Considered a madman and a failure in his lifetime,Van Gogh exists in the public imagination as the"  
                "quintessential misunderstood genius, the artist 'where discourses on madness and creativity converge'.His reputation began to grow"  
                "in the early 20th century as elements of his painting style came to be incorporated by the Fauves and German Expressionists.He attained"  
                "widespread critical, commercial and popular success over the ensuing decades, and is remembered as an important but tragic painter,"  
                "whose troubled personality typifies the romantic ideal of the tortured artist.",
                Rating = "",
                Artwork1 = "https://upload.wikimedia.org/wikipedia/commons/9/94/Starry_Night_Over_the_Rhone.jpg",
                Artwork2 = "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Vincent_van_Gogh_-_De_slaapkamer_-_Google_Art_Project.jpg/1280px-Vincent_van_Gogh_-_De_slaapkamer_-_Google_Art_Project.jpg",
                Artwork3 = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Vincent_Willem_van_Gogh_128.jpg/175px-Vincent_Willem_van_Gogh_128.jpg"
            }

        );
    }
}
}
  

Комментарии:

1. Ну, что эти внутренние исключения говорят вам о том, что сообщение об ошибке просит вас проверить?

2. @marc_s Мои извинения, я не знал, где искать, но при проверке я обнаружил следующее: «Преобразование типа данных datetime2 в тип данных datetime привело к значению вне диапазона».

3. Это может произойти, если вы не присвоите значение полю даты и времени, когда поле не принимает нулевые значения.

4. @Tarzan Разве этот формат не подойдет? ‘Дата рождения = дата-время. Синтаксический анализ («25-10-1881»), ‘

5. Неясно: невозможно воспроизвести, все даты указаны позже 1 января 1753 года.

Ответ №1:

Эта строка вызывает ошибку, поскольку строка не распознается как допустимая дата-время.

 BirthDate = DateTime.Parse("25-10-1881")
  

Решение состоит в том, чтобы переписать строку с помощью ParseExtract следующим образом.

 BirthDate = DateTime.ParseExact("25-10-1881", "dd-MM-yyyy", null);
  

Кроме того, убедитесь, что поле SQL Server допускает значения, которые вы пытаетесь сохранить.

Комментарии:

1. Я только что попробовал это, и все равно ничего, то же исключение «вне диапазона».

2. Можете ли вы опубликовать трассировку стека, чтобы мы могли увидеть больше информации об ошибке?

3. Вот изображение полной ошибки i.stack.imgur.com/wP8M3.png .

4. Внутреннее исключение является SQLException, поэтому оно генерируется поставщиком SqlClient. Другими словами, ошибка генерируется базой данных. Тип данных SQL Server datetime способен хранить даты в диапазоне от 1753-01-01 до 9999-12-31. Тип данных datetime2, который можно хранить, — от 0001-01-01 до 9999-12-31. Какой тип данных представляет собой столбец в таблице SQL Server?

5. Дата рождения в таблице SQL server — это дата-время. Измените его на datetime2 .

Понравилась статья? Поделить с друзьями:
  • При обновлении драйверов происходит ошибка
  • При обновлении дота 2 произошла ошибка чтения диска
  • При обновлении дота 2 произошла ошибка файлы обновления повреждены
  • При обновлении дота 2 произошла ошибка при записи на диск что делать
  • При обновлении дота 2 произошла ошибка отсутствуют загруженные файлы