EF6 + MySQL - Ошибка вставки 2 связанных объектов в один SaveChanges

entity-framework entity-framework-6 mysql

Вопрос

Я использую EF6 и MySql и собираюсь вставить два новых связанных объекта Client и Quote (где Quote имеет клиент) в один звонок для сохранения изменений. Это должно отображаться вставить в таблицу клиентов и вставить в таблицу котировок. Код:

        var client = new Client();
        db.Client.Add(client);            
        var quote = new Quote();
        quote.Client = client;
        db.Quote.Add(quote);

        db.SaveChanges();

Исключение составляет:

Additional information: An error occurred while updating the entries. See the inner exception for details.

   at System.Data.Entity.Internal.InternalContext.SaveChanges()
   at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
   at System.Data.Entity.DbContext.SaveChanges()
  at MyTestClass... 

Внутреннее исключение:

{"The specified value is not an instance of a valid constant type.\r\nParameter name: type"}

   at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
   at System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<Update>b__2(UpdateTranslator ut)
   at System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update[T](T noChangesResult, Func`2 updateFunction, Boolean throwOnClosedConnection)
   at System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update(Boolean throwOnClosedConnection)
   at System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__33()
   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy)
   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass28.<SaveChanges>b__25()
   at System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options)
   at System.Data.Entity.Internal.InternalContext.SaveChanges()

Классы объектов:

public class Client
{
    //AUTO_INCREMENT
    [Key]
    public long Id { get; set; }
    ....
}

public class Quote
{

    //AUTO_INCREMENT
    [Column("id")]
    [Key]
    public long Id { get; set; }

    [Column("client")]
    [ForeignKey("Client")]
    public long ClientId { get; set; }

    public virtual Client Client { get; set; }
    ...
}

Библиотеки:

  • EF6
  • MySql.Data.dll v6.8.3
  • MySql.Data.Entity.EF6.dll v6.8.3

Если я добавлю db.SaveChanges () после строки db.Client.Add (клиент), она будет работать нормально, но я хочу сделать SavChanges как можно позже, чтобы группировать вызовы базы данных. Любые идеи, что может пойти не так?

Принятый ответ

Проблема была связана с подписанными / неподписанными значками, как описано здесь .


Популярные ответы

Я не могу воспроизвести это, более подробную информацию о моем тестовом примере можно найти в http://forums.mysql.com/read.php?38,608603,608603#msg-608603 (где вы также разместили вопрос).

Благодарю.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему