2017-03-20 11 views
0

コードファーストアプローチでEFを使用しています。Entity Frameworkコードファーストアプローチエラー:シーケンスに外部キーを持つテーブルの複数の要素が含まれています

public class Software 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 

    public Guid TerminalId { get; set; } 

    public virtual Terminal Terminal { get; set; } 
} 

正常に動作しますadd-migration "add foreign key "コマンドを使用して、マイグレーションの作成:

public class Terminal 
{ 
    public Terminal() 
    { 
     Softwares = new List<Software>(); 
    } 

    public Guid Id { get; set; } 

    public ICollection<Software> Softwares { get; set; } 
} 

このsoftwareクラスはTerminalテーブルへの外部キーを持っている:私は2つのモデルクラスを持っています。私はパッケージマネージャコンソールからupdate-databaseコマンドを呼び出すときしかし、私はこのエラーを取得する:

System.InvalidOperationException: Sequence contains more than one element
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 source)
at System.Data.Entity.Migrations.DbMigrator.FillInForeignKeyOperations(IEnumerable1 operations, XDocument targetModel)
at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable1 operations, IEnumerable1 systemOperations, Boolean downgrading, Boolean auto)
at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.b__b()
at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Sequence contains more than one element

私は私はあなたがあなたの子孫にSingleOrDefaultを使用していることを前提としていますコンソール

+0

これは私の環境で正常に動作します。保留中の他の移行や変更があるかもしれませんか? – illug

答えて

1

からだけでなくEFを更新しました方法は、このthredと同じです:

InvalidOperationException: Sequence contains more than one element

+0

シードメソッドに明示的にコードを追加していません。シードメソッドはコードを持っていませんが、まだ私はこのエラーに直面しています。私は6.1.3バージョンのEFを使用しています。興味深いもの: –

+0

これらのクラスを使用して、あなたとまったく同じ移行を作成し、データベースを更新することができました。空のプロジェクトを試してみてください。 – illug

+0

はい、私は新しいプロジェクトを試してみました。既存のプロジェクトでは機能しません。何が間違っているか理解できない –

関連する問題