В процессе обновления произошла ошибка которая вызвала исключение

Всем привет, 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, и я пытался добавить диапазон.


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

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

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

Я публикую снимок экрана с Diagram / Generated DLL / Simple Main / И выбросом ошибок

Ссылка для увеличения размера: http://i.imgur.com/bKGc4wv.png

  • 1 Что такое внутренняя ошибка?
  • 2 означает то, что написано. Вы вызываете объект , который не существует. Вы использовали EF для множественного числа ваших таблиц? Если это так, таблица EF могла бы быть чем-то странным, например «Pupilss». Обычно таблица базы данных имеет единственное число, а EF — множественное число. И наличие перед ним тоже странно.
  • 1 Правильно ли настроена ваша строка подключения для указания на эту базу данных? Где ваш код для сопоставления ваших классов с базой данных? Отправьте код и сохраните снимки экрана, чтобы наглядно понять, что происходит не так. Просто скопируйте и вставьте деталь об исключении вместо снимка экрана этого окна.
  • просто другое решение: для меня это было потому, что длина строки была больше, чем длина varchar столбца DB.

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

ОБНОВИТЬ

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

Включение и выключение множественного числа

  • В меню «Сервис» выберите «Параметры».

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

  • Щелкните O / R Designer.

  • Установите для параметра Pluralization of names значение Enabled = False, чтобы настроить конструктор O / R таким образом, чтобы он не изменял имена классов.

  • Установите для множественного числа имен значение Enabled = True, чтобы применить правила множественного числа к именам классов объектов, добавленных в конструктор O / R.

ОБНОВЛЕНИЕ 2

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

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

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

  • Где мне его включить?
  • 2 К сожалению, у меня включена плюрализация, так что проблема не в этом: /
  • @CSharpBeginner Я предлагаю вам создать таблицы с единственными именами, а затем в вашем коде также принудительно использовать единственные имена, как показано на изображении выше. попробуйте.

Это могло быть вызвано преобразованием данных из .NET в SQL, например ошибкой преобразования даты и времени. Для меня это была пустая ссылка на столбец datetime.

Кроме того, это не точное сообщение об ошибке. Вы можете увидеть точную ошибку в часах в exception.InnerException.InnerException -> ResultView.

  • Это то, что было для меня.
  • Полезное предложение найти , точное сообщение получил как Несоответствие названия объекта. Имя таблицы в базе данных и определенная сущность имели разные имена
  • что значит «в часах»?
  • Ах, всплывающее окно исключения QuickWatch в Visual Studio.

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

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

Просмотрите внутреннее исключение исключения, чтобы получить более конкретное сообщение об ошибке.

Один из способов просмотреть внутреннее исключение — это перехватить исключение и установить на нем точку останова. Затем в окне «Местные жители»: выберите переменную исключения> InnerException> Сообщение

И / или просто напишите в консоль:


  • Чтобы выяснить причину исключения DbUpdateException, требуется нечто большее.
  • Получить причину «Произошла ошибка при обновлении записей. См. Подробности во внутреннем исключении» — нет.
  • 1 Спасибо, что показали мне, как увидеть InnerException. Это приближает меня к решению в моем случае. Я дал за это голос

У меня была такая же проблема с SaveChanges () в EF, но в моем случае я забыл обновить свою таблицу sql, а затем после того, как я использовал миграцию, моя проблема решена, поэтому, возможно, обновление ваших таблиц решит проблему.

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

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

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

  • Это не может быть решением, если и только если это сработает в вашем случае, тогда я бы сказал, что это был взлом, а не решение.

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

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

В моем случае … решены следующие шаги:

Было значение столбца, для которого было установлено значение «Обновить» — заменили его на «Изменить» (не ключевое слово sql). В одном из имен столбцов был пробел (лишний пробел или обрезка удалены)

Продолжим изучение возможностей Entity Framework Code First для указания соотношений классов Модели и создаваемых таблиц. На очереди второй способ – использование Fluent API.

Потоковый интерфейс (Fluent API)

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

  • Методы возвращают объекты, что позволяет вызывать их цепочкой в рамках одного оператора.
  • Имена методов подбираются так, чтобы обеспечить максимально понятный код.

Чтобы лучше понять суть Fluent API, давайте посмотрим как может выглядеть запись оператора с использованием такого подхода:

modelBuilder.Entity<Gamer>()
.HasRequired(e => e.ReserveTeam)
.WithMany(t => t.Reserve)
.HasForeignKey(e => e.ReserveId)
.WillCascadeOnDelete(false);

Правильно подобранные названия методов обеспечивают лёгкое понимание цели исходного кода. Например, в приведенном выше коде можно легко прочитать, что:

в сущности, описанной классом Gamer 
.есть обязательное навигационное поле ReserveTeam
.связанное с коллекцией Reserve в другой сущности (таблице)
.при помощи внешнего ключа ReserveId
.без каскадного удаления записей

Кроме того, такой подход очень удобен при использовании совместно с контекстными подсказками, такими как IntelliSense в Visual Syudio. В этом случае они наглядно указывают возможные дальнейшие действия в зависимости от текущего контекста.

В качестве минуса потокового интерфейса необходимо отметить невозможность указания точки останова для отладчика между вызовами методов в цепочке.

В этой серии статей под Fluent API будем понимать, как правило, реализацию интерфейса Entity Framework Code First для настройки параметров генерации таблиц.

Использование Entity Framework Fluent API

Как уже было отмечено, при использовании Entity Framework Fluent API нет необходимости модифицировать Модель. Параметры создания таблиц определяются программно. Необходимый для этого код размещается внутри метода OnModelCreating(DbModelBuilder modelBuilder), переопределенного в соответствующем классе контекста базы данных.

Построение выражений для каждого нового правила начинается с экземпляра DbModelBuilder, полученного в качестве параметра. Его метод Entity<T>() возвращает объект типа EntityTypeConfiguration. Он, в свою очередь, используется для настройки параметров генерации таблицы для сущности указанного типа T. Вот пример кода на основе класса контекста CatalogContext из создаваемого веб-приложения:

namespace BookCatalog.Models.DbContext
{
using System.Data.Entity;
using BookCatalog.Models;
public class CatalogContext : DbContext
{
// You can add custom code to this file. Changes will not be overwritten.
// 
// If you want Entity Framework to drop and regenerate your database
// automatically whenever you change your model schema, add the following
// code to the Application_Start method in your Global.asax file.
// Note: this will destroy and re-create your database with every model change.
// 
// System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<BookCatalog.Models.CatalogContext>());
public DbSet<Tag> Tags { get; set; }
public DbSet<Publisher> Publishers { get; set; }
public DbSet<Language> Languages { get; set; }
public DbSet<BookDetails> Books { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// место для вызовов Entity Framework Fluent API
}
}
}

В приведенном примере отмечено место добавления вызовов Fluent API. Их, в зависимости от цели, можно разделить на три группы:

  • Настройка свойств;
  • Настройка типов;
  • Настройка взаимосвязей между сущностями.

Давайте рассмотрим каждую группу в отдельности подробнее и с небольшими примерами.

Настройка свойств с использованием Fluent API

Для настройки параметров соотношения отдельных свойств и колонок таблицы в базе данных класс EntityTypeConfiguration предоставляет метод Property(). Он возвращает объект, являющийся одним из наследников класса PrimitivePropertyConfiguration, которые и содержит необходимые методы. Посмотрим на некоторые из них на примерах.

Указание первичного ключа

И начнём сразу с исключения. Дело в том, что первичный ключ задается вызовом HasKey() класса EntityTypeConfiguration. Для примера, укажем в этой роли свойство Id сущности BookDetails:

modelBuilder.Entity<BookDetails>().HasKey(b => b.Id);

В качестве параметра передается лямбда-выражение, которое возвращает значение свойства, выбранного для первичного ключа. На основе полученного параметра, ядро Entity Framework определит необходимое свойство и создаст первичный ключ на его основе. Стоит отметить, что именно так во многих методах Fluent API указываются свойства для настройки.

Если необходимо задать составной первичный ключ по двум свойствам, то код будет выглядеть так:

modelBuilder.Entity<Publisher>().HasKey(p => new { p.Title, p.Homepage } );

Атрибут-аналог: [Key].

Ограничение длины строки

Ограничим длину свойства Title класса BookDetails в 128 символов:

modelBuilder.Entity<BookDetails>().Property(p => p.Title)
.HasMaxLength(128);

Атрибут-аналог: [MaxLenght].

Обязательное к заполнению свойство

Также для указанного в прошлом примере свойства установим необходимость всегда содержать значение

modelBuilder.Entity<BookDetails>().Property(p => p.Title)
.IsRequired();

Атрибут-аналог: [Require].

Установка способа генерации значения

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

modelBuilder.Entity<BookDetails>().Property(p => p.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

Атрибут-аналог: [DatabaseGenerated].

Исключение свойства при создании таблицы

Предположим, что в классе BookDetails есть свойство TotalTagsLenght. Его не требуется включать в базу данных, так как это значение вычисляется бизнес-логикой веб-приложения. Указать это можно следующим способом:

modelBuilder.Entity<BookDetails>().Ignore(t => t.TotalTagsLenght);

Атрибут-аналог: [NotMapped].

Указание имени для колонки в базе данных

Для свойства PublishedAt класса BookDetails установим текст «PublishDate» в качестве имени колонки:

modelBuilder.Entity<BookDetails>().Property(t => t.PublishedAt)
.HasColumnName("PublishDate");

Атрибут-аналог: [Column].

Указание использовать или не использовать уникод для текстового поля

По умолчанию, на основе всех свойств типа string будут созданы колонки типа nvarchar, т.е. с поддержкой уникода. При необходимости можно изменить это поведение:

modelBuilder.Entity<BookDetails>().Property(t => t.Author)
.IsUnicode(false);

Атрибут-аналог: [Column] c явным указанием типа колонки.

Указание порядка колонки в таблице

Указать порядковый номер колонки в таблице можно используя метод HasColumnOrder():

modelBuilder.Entity<BookDetails>().Property(t => t.Author)
.HasColumnOrder(2);

Атрибут-аналог: [Column] c явным указанием порядкового номера.

Указание использовать определенный тип для колонки в базе данных

Fluent API позволяет указать тип, который должна содержать связанная со свойством колонка:

modelBuilder.Entity<BookDetails>().Property(t => t.Author)
.HasColumnType("varchar");

Атрибут-аналог: [Column] c явным указанием типа колонки.

Конфигурация вложенных типов

Рассмотрим ситуацию, когда класс Customer включает в себя экземпляр класса Address. В последнем есть свойство Street, которому необходимо установить максимальную длину строки в 128 символов. Такая задача легко решается с помощью Fluent API:

modelBuilder.Entity<Customer>().Property(t => t.Address.Street)
.HasMaxLength(128);

Стоит отметить, что основное преимущество Fluent API проявляется при необходимости указать несколько параметров соотношения для одного свойства. И несмотря на то, что в примерах выше настраивается по одному свойству, следующая запись корректна:

modelBuilder.Entity<BookDetails>().Property(t => t.Title)
.IsRequired()
.HasMaxLength(128)
.HasColumnName("BookTitle")
.HasColumnOrder(2);

Оставим небольшое число методов для самостоятельного изучения и перейдем к настройке параметров отображения для типов.

Настройка типов с использованием Fluent API

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

Указание имени таблицы

Допустим необходимо присвоить имя «Catalog» для таблицы, в которой будут располагаться данные из экземпляров класса BookDetails. Код этой настройки будет следующий:

modelBuilder.Entity<BookDetails>().ToTable("Catalog");

Атрибут-аналог: [Table].

Исключение типа при создании таблицы

Entity Framework Code First автоматически определяет используемые типы и размещает их в таблицах создаваемой базы данных. В некоторых случаях необходимо исключить определенные классы из этого процесса. Например, если данные для них вычисляются. Код, решающий эту задачу, выглядит следующим образом:

modelBuilder.Ignore<Tag>();

В данном случае экземпляры класса Tag не будут сохраняться в базе данных. Равно как и не будет создана соответствующая таблица.

Указание сложных типов

Entity Framework Code First также автоматически распознает сложные типы. Однако в некоторых случаях могут быть ошибки. Например, если в таком классе есть поле Id для каких-либо целей. Тогда потребуется указать его с помощью FluentAPI:

modelBuilder.ComplexType<SomeComplexType>(); 

Настройка отображения «Таблица для иерархии (Table per hierarchy)»

При использовании данного типа отображения наследования, для всех классов, унаследованных от общего базового, создается единая таблица. В Code First это вариант по умолчанию. При этом в таблицу добавляется колонка под названием Discriminator, в которой указывается имя конкретного типа для каждой строки. Переопределить такое поведение можно следующим образом:

modelBuilder.Entity<BaseType>() 
.Map<BaseType>(m => m.Requires("Type").HasValue("BaseType")) 
.Map<ChildType>(m => m.Requires("Type").HasValue("ChildType"));

Настройка отображения «Таблица для каждого конкретного типа (Table per concrete type)»

Тип отображения наследования «таблица для каждого конкретного типа» подразумевает, что создаются индивидуальные таблицы для каждого конкретного типа. Определить такое поведение при помощи Fluent API можно следующим образом:

modelBuilder.Entity<BaseType>()
.Property(p => p.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<ChildType>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("ChildType");
});

Настройка отображения «Таблица для каждого типа (Table per type)»

Этот вариант отображения наследования предусматривает, что создается одна таблица на основе базового типа для общих свойств. Все остальные размещаются в вспомогательных таблицах. Задается такая схема следующим образом:

modelBuilder.Entity<BaseType>().ToTable("BaseType"); 
modelBuilder.Entity<ChildType>().ToTable("ChildType");

Разделение одного типа по нескольким таблицам

В некоторых ситуация необходимо разделить существующий класс на несколько таблиц с целью оптимизации производительности.

Предположим, что свойства Id, Title, Author и Url класса BookDetails запрашиваются наиболее часто. Поэтому расположим их в отдельной таблице:

modelBuilder.Entity<BookDetails>()
.Map(m => {
m.Properties(b => new { b.Id, b.Title, b.Author, b.Url });
m.ToTable("Catalog");
})
.Map(m => {
m.Properties(b => new { 
b.Description,
b.IsFree,
b.IsVisible,
b.LanguageId,
b.PublishedAt,
b.PublisherId,
b.Rating });
m.ToTable("BookDetails");
});

Объединение нескольких классов в одну таблицу

Данный сценарий может пригодиться для оптимизации в случае связи «одна строка к одной». Например, пусть каждый судья (класс Arbitter) может быть назначен только на одну игру (класс Game). Тогда код Fluent API будет выглядеть следующим образом:

modelBuilder.Entity<Game>()
.HasKey(g => g.ArbitterID);
modelBuilder.Entity<Arbitter>()
.HasRequired(a => a.Game)
.WithRequiredPrincipal(t => t.Arbitter);
modelBuilder.Entity<Arbitter>().ToTable("Games");
modelBuilder.Entity<Game>().ToTable("Games");

В следующей части тема настройки Модели для Code First будет продолжена. В ней рассмотрим возможности Fluent API для указания связей между таблицами.

been looking around and i just cant seem to figure out what is wrong.

Currently i’m trying to update my database with a new highscore when ever the player dies. But it keeps throwing that exception at me, no matter what i choose to try and save.

Code:

 HighScore hs = new HighScore();
            var id = from i in db.HighScores
                     orderby i.ID descending
                     select i;
            int newId = 0;

            if (id.Count() == 0)
            {
                newId = 1;
            }
            else
            {
                newId = id.First().ID + 1;
            }
        hs.ID = 6; //I just hardcoded in 6 to make sure i wasent because of the newId      //thing, and i have checked if theres already something on the sixths spot as well.
            hs.UserHighscore = 100;
            hs.HighscoreUsername = "test";
            hs.GameID = 1;
            db.HighScores.AddObject(hs);
            db.SaveChanges();

I’ve checked, again and again, and i just cant seem to figure out what the problem is.

Any help would be appriciated.

The exception:

System.Data.UpdateException was unhandled
  Message=An error occurred while updating the entries. See the inner exception for details.
  Source=System.Data.Entity
  StackTrace:
       at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
       at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
       at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
       at System.Data.Objects.ObjectContext.SaveChanges()
       at MatematikSpilMenu.SaveBunniesSceen.SaveHighscore() in MatematikSpilMenuSaveBunniesSceen.cs:line 173
       at MatematikSpilMenu.SaveBunniesSceen.Update(GameTime gameTime, Boolean otherScreenIsActive, Boolean coveredByOtherScreens) in C:UsersEtarnalazure-Aliendocumentsvisual studio 2010ProjectsMatematikSpilMenuMatematikSpilMenuMatematikSpilMenuSaveBunniesSceen.cs:line 110
       at MatematikSpilMenu.ScreenManager.Update(GameTime gameTime) in MatematikSpilMenuScreenManager.cs:line 101
       at Microsoft.Xna.Framework.Game.Update(GameTime gameTime)
       at Microsoft.Xna.Framework.Game.Tick()
       at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
       at Microsoft.Xna.Framework.GameHost.OnIdle()
       at Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame()
       at Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object sender, EventArgs e)
       at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at Microsoft.Xna.Framework.WindowsGameHost.Run()
       at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
       at Microsoft.Xna.Framework.Game.Run()
       at MatematikSpilMenu.Program.Main() in MatematikSpilMenuGame1.cs:line 120
  InnerException: System.Data.EntityCommandCompilationException
       Message=An error occurred while preparing the command definition. See the inner exception for details.
       Source=System.Data.Entity
       StackTrace:
            at System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
            at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.CreateCommand(UpdateTranslator translator, Dictionary`2 identifierValues)
            at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
            at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
       InnerException: System.NotSupportedException
            Message=Server-generated keys and server-generated values are not supported by SQL Server Compact.
            Source=System.Data.SqlServerCe.Entity
            StackTrace:
                 at System.Data.SqlServerCe.SqlGen.DmlSqlGenerator.GenerateReturningSql(StringBuilder commandText, DbModificationCommandTree tree, ExpressionTranslator translator, DbExpression returning)
                 at System.Data.SqlServerCe.SqlGen.DmlSqlGenerator.GenerateInsertSql(DbInsertCommandTree tree, List`1& parameters, Boolean isLocalProvider)
                 at System.Data.SqlServerCe.SqlGen.SqlGenerator.GenerateSql(DbCommandTree tree, List`1& parameters, CommandType& commandType, Boolean isLocalProvider)
                 at System.Data.SqlServerCe.SqlCeProviderServices.CreateCommand(DbProviderManifest providerManifest, DbCommandTree commandTree)
                 at System.Data.SqlServerCe.SqlCeProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree)
                 at System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)
                 at System.Data.Common.DbProviderServices.CreateCommand(DbCommandTree commandTree)
                 at System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
            InnerException: 

Модуль уже существует

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Аватара пользователя

Олега

Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 187
Стаж: 6 лет 3 месяца
Контактная информация:

Модуль уже существует

Стояло расширение exlinks-master Потом для поиска ошибки было отключено и вообще удалено с сервера. Думаю что данные не забыл удалить.
После этого ставились еще расширения и вобще все было окей. И вот думаю опять его запустить попробовать и вот такое мне сообщение. Как этот мудуль сделать несуществующим?

[center]В процессе обновления произошла ошибка, которая вызвала исключение. Изменения, произведенные до появления ошибки, были отменены. Тем не менее, рекомендуется проверить конференцию на отсутствие ошибок в работе.
Модуль уже существует: ACP_MODED_LINKS_TITLE
Вернуться к списку расширений[/center]

#1

Аватара пользователя

DeaDRoMeO

Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 12 лет 3 месяца
Откуда: Витебск
Контактная информация:

Модуль уже существует

Сообщение

DeaDRoMeO » 07 мар 2017, 06:54

Гляньте в админке — Система — Администраторский раздел — Настройки расширений, там среди списка расширений должен быть этот модуль

На вопросы, связанные с phpBB, по ЛС не отвечаю !!!

#2

Аватара пользователя

Олега

Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 187
Стаж: 6 лет 3 месяца
Контактная информация:

Модуль уже существует

Сообщение

Олега » 07 мар 2017, 08:08

Я это понимаю. Только какое ? Я смотрю на них и не вижу ничего похожего…

Advanced BBCode Box 3.1.3
Avatars on Memberlist 1.0.1
Blinking counter, for new pm and new notify 1.0.3
Board3 Portal 2.1.0
Board Announcements 1.0.5
Delete my registration 1.0.3
Disallow External Images 1.0.0 ( пробовал отключать )
Extension Highslide 0.0.2
Forum ID Remove 1.0.0
Inline images in attachment 1.0.0
Locked topics at end 1.0.0
mChat 2.0.0
NavBar Search 1.0.0
Pages 1.0.5
phpBB3 SEO Sitemap 1.1.1
PM Spy 1.0.1
Poster IP in Viewtopic 1.0.1
Posts merging 2.0.2
Pretty Topic 1.0.0
Private Message Box Status Bars 2.0.1
Profile Contact Icon in Topics 0.0.1
Profile side switcher 0.0.1
Prune Logs 3.1.0
Quote 0.0.1
Red title for new topic and new reply 1.0.2
RegIPLimit 1.0.0
Right Side Header Image 3.1.0
Search user topics 1.0.1
Seo Meta Description 1.0.0
smilies scroll box 1.0.3
Sortables Captcha 2.0.0
Unique Visits Counter 1.0.3

Может когда я удалял расширения для поиска какой то проблемы от него что то не удалилось? Просто мне не приходит на ум другое….

#3

Аватара пользователя

DeaDRoMeO

Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 12 лет 3 месяца
Откуда: Витебск
Контактная информация:

Модуль уже существует

Сообщение

DeaDRoMeO » 07 мар 2017, 10:12

Вы хоть туда куда надо смотрите? Нужно, админка — система — администраторский раздел — настройки расширений

Может смотрите просто в админка — настройки расширений?

На вопросы, связанные с phpBB, по ЛС не отвечаю !!!

#4

Аватара пользователя

Олега

Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 187
Стаж: 6 лет 3 месяца
Контактная информация:

Модуль уже существует

Сообщение

Олега » 07 мар 2017, 14:39

:wo_ol: :wo_ol: :wo_ol: Блииииин А я и не знал что еще и там прописывается)))))))))
Удалил его Терь все окей ))))) ПАСИБКИ )))))))))))

#5

Аватара пользователя

DeaDRoMeO

Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 12 лет 3 месяца
Откуда: Витебск
Контактная информация:

Модуль уже существует

Сообщение

DeaDRoMeO » 07 мар 2017, 17:26

На здоровье, видимо деинсталлятор криво прописан в том расширении раз хвосты остались

На вопросы, связанные с phpBB, по ЛС не отвечаю !!!

#6

При обновлении Windows пользователи сталкиваются с ошибкой «исключение неизвестное программное исключение (0xc06d007e)». При попытке закрыть процесс в Диспетчере задач, она постоянно возвращается. Узнаем подробнее причины ошибки и способы ее исправить.

Запуск средства устранения неполадок

Если сталкиваетесь с ошибкой 0xc06d007e во время установки обновления, то, скорее всего, она связана с повреждением Центра обновления Windows, его компонентов или зависимостей. Чтобы восстановить эту функцию, запустите средство устранения неполадок Центра обновления Windows.

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

Откройте раздел Устранения неполадок командой ms-settings:troubleshoot, запущенной из окна «Выполнить» (WIn +R).

Найдите в правой части окна запись Центр обновления Windows, щелкните на нее и запустите процесс.

При обнаружении проблемы кликните на кнопку «Применить это исправление» и следуйте инструкциям на экране. После завершения перезагрузите ПК и проверьте, устранена ли проблема.

Удаление антивируса

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

Перейдите в раздел «Удаление или изменение программ» командой appwiz.cpl из окна «Выполнить» (Win + R).

Найдите антивирусную программу, кликните на ней правой кнопкой мыши выберите «Удалить». Следуйте инструкциям деинсталлятора до завершения процесса.

Выполнение чистой загрузки

Существует много приложений, которые могут быть причастны к возникновению неизвестного исключения 0xc06d007e. Обнаружить проблемную службу или фоновый процесс можно путем выполнения чистой загрузки.

В этом режиме система запускается без служб и приложений сторонних разработчиков. Если после загрузки сообщение об ошибке не появляется, то, скорее всего, она связана с конфликтующим приложением.

Перейдите в конфигурацию системы командой msconfig, запущенной из окна командного интерпретатора (Win + R).

На вкладке Службы установите флажок на опции «Не отображать службы Майкрософт». Затем нажмите на кнопку «Отключить все», чтобы предотвратить загрузку сторонних служб при следующем запуске системы.

Затем перейдите на вкладку Автозагрузка и кликните на ссылку Открыть Диспетчер задач и отключите все приложения из автозагрузки.

После этого перезагрузите компьютер, чтобы система запустилась в режиме чистой загрузки. Теперь проверьте, возникает ли ошибка неизвестного программного исключения. Если она больше не появляется, включайте по 2-3 программы и службы и перезагружайте компьютер, пока не обнаружите виновника. При обнаружении удалите проблемное приложение, которое вызывало ошибку 0xc06d007e.

Проверка системы на наличие повреждений

Если продолжаете сталкиваться с ошибкой 0xc06d007e, то причина, скорее всего, связана с повреждением системного файла. Многие сталкиваются с ошибкой неизвестного программного исключения (0xc06d007e), когда антивирус переместит на карантин компонент, который принадлежит драйверу или зависимости системы.

Для решения проблемы воспользуемся утилитами SFC и DISM, способных восстановить поврежденные системные файлы. Принцип их работы отличается. DISM загружает рабочие копии поврежденных файлов из серверов Центра обновления Windows, тогда как SFC использует локальное хранилище.

Поскольку DISM используется в ситуациях, когда SFC не может полностью исправить повреждения, рекомендуется выполнить оба сканирования.

В строке системного поиска наберите cmd, затем щелкните правой кнопкой мыши на найденный результат и запустите от имени администратора.

Для проверки системы выполните команду:

sfc /scannow

Не прерывайте процесс сканирования до его завершения, поскольку это может привести к другим проблемам. После перезагрузите компьютер.

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

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

DISM / Online / Cleanup-Image / RestoreHealth

После завершения процесса перезагрузите компьютер и проверьте, удалось ли исправить ошибку 0xc06d007e.

В этом посте представлены решения для исправления ошибки исключения неизвестного программного обеспечения 0xc0000409. Эта ошибка может возникнуть из-за программной ошибки в программном обеспечении и возможного конфликта с ОС Windows. Сообщение об ошибке гласит:

Ошибка приложения — в приложении по адресу 0x00994d78 произошло исключение неизвестного программного исключения (0xc0000409). Нажмите OK, чтобы закрыть программу

Исключение: ошибка исключения неизвестного программного обеспечения 0xc0000409

Что вызывает ошибку исключения неизвестного программного обеспечения 0xc0000409?

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

Fix Exception Неизвестная ошибка исключения программного обеспечения 0xc0000409

Исправить Исключение: ошибка исключения неизвестного программного обеспечения 0xc0000409 на ПК с Windows 10/11 выполните следующие действия:

  1. Запустите средство проверки системных файлов
  2. Используйте средство восстановления .NET Framework
  3. Запустить проверку диска
  4. Удалите и переустановите программное обеспечение, выдающее эту ошибку
  5. Устранение неполадок в состоянии чистой загрузки
  6. Восстановление системы до состояния, предшествующего возникновению проблемы

Теперь давайте посмотрим на них подробно:

1]Запустите средство проверки системных файлов

Как уже упоминалось, поврежденные системные файлы могут вызвать ошибку исключения неизвестного программного обеспечения 0xc0000409. Запуск сканирования SFC просканирует и восстановит эти файлы. Вот как вы можете запустить SFC:

  • Нажмите на клавишу Windows и найдите командную строку.
  • Нажмите «Запуск от имени администратора».
  • Введите следующую команду и нажмите Enter: sfc/scannow
  • После этого перезагрузите устройство и проверьте, исправлен ли код ошибки.

2]Используйте инструмент восстановления .NET Framework

сетевая структура-ремонт-инструмент

.NET Framework позволяет создавать и запускать приложения в Windows. Проблемы с настройкой и обновлением платформы также могут вызывать ошибку 0xc0000409 на вашем компьютере с Windows 11/10. Запустите средство восстановления .NET Framework и проверьте, устраняет ли оно ошибку.

3]Запустить проверку диска

chkdsk

CHKDSK — это утилита Windows, которая сканирует и исправляет системные ошибки. Он также проверяет, не повреждены ли какие-либо части жесткого диска, что может вызвать эту проблему. Вот как вы можете запустить сканирование CHKDSK:

  • Нажмите «Пуск», найдите «Командная строка» и нажмите «Запуск от имени администратора».
  • Введите следующую команду и нажмите Enter.CHKDSK C:/f/r/x
  • Команда не запустится, так как используется корневой диск вашего устройства. Однако он попросит вас начать сканирование при перезагрузке компьютера.
  • Введите Y, нажмите Enter и перезагрузите Windows.
  • Теперь команда CHKDSK начнет выполняться. Дождитесь завершения процедуры.
  • Затем включите устройство и проверьте, устранена ли ошибка.

4]Удалите и переустановите программное обеспечение, выдающее эту ошибку.

Если вы все еще сталкиваетесь с ошибкой 0xc0000409, возможно, это связано с некоторыми ошибками в соответствующих файлах приложений. Чтобы это исправить, переустановите приложение и проверьте, устранена ли проблема.

5]Устранение неполадок в состоянии чистой загрузки

Чистая загрузка

Сторонние приложения, установленные на вашем устройстве, могут нести ответственность за код ошибки 0xc0000409. Выполните чистую загрузку вашего ПК, чтобы запретить все сторонние приложения. Вот как вы можете это сделать:

  • Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить».
  • Тип msconfig и нажмите Enter.
  • Перейдите на вкладку «Общие» и установите флажок «Выборочный запуск» и «Параметры загрузки системных служб» под ним.
  • Перейдите на вкладку «Службы» и установите флажок «Скрыть все службы Microsoft».
  • Нажмите «Отключить все» в правом нижнем углу и нажмите «Применить», затем «ОК», чтобы сохранить изменения.
  • Если ошибка не появляется в состоянии чистой загрузки, вам может потребоваться вручную включить один процесс за другим и посмотреть, кто виноват. Как только вы определили его, отключите или удалите программное обеспечение.

6]Восстановление системы до точки, предшествующей возникновению проблемы

В случае сбоя установки или повреждения данных функция «Восстановление системы» может вернуть ваше устройство в рабочее состояние без переустановки операционной системы. Это восстановит среду Windows, установив файлы и настройки, сохраненные в точке восстановления. Вот как вы можете выполнить восстановление системы. Обратите внимание, что это можно сделать, только если вы ранее создали точку восстановления системы.

Чтение: в приложении произошло неизвестное программное исключение (0xe0434352).

Как исправить исключение неизвестного программного обеспечения 0xc0000409?

Ошибка исключения неизвестного программного обеспечения 0xc0000409 обычно возникает из-за поврежденных системных файлов. Попробуйте запустить сканирование SFC и отключить брандмауэр Windows, чтобы исправить эту ошибку. Подробное руководство или решение упоминается в этой статье. Рекомендуется следовать им, чтобы избавиться от этой проблемы.

Как исправить исключение неизвестного программного обеспечения 0xc06d007e?

Чтобы исправить ошибку 0xc06d007e, вы должны найти программу запуска или службу, вызывающую ошибку. Затем вам нужно будет изолировать ответственную программу, включив один запуск в диалоговом окне «Конфигурация системы» и перезагрузив компьютер. Помимо этого, вы можете воспользоваться вышеупомянутыми советами и рекомендациями, чтобы исправить ошибку 0xc06d007e.

Возможно, вам также будет интересно:

  • В процессе обновления информационной базы произошла некритичная ошибка
  • В процессе обновления информационной базы произошла критическая ошибка субд
  • В процессе обновления информационной базы произошла критическая ошибка sdbl
  • В процессе обновления windows произошла ошибка
  • В процессе интеграции smartfix в загрузочное меню произошла ошибка

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии