0

最初にエンティティ フレームワーク 5 コードで単純な自己参照を作成しようとしています。アイテムはオプションの子を持つことができ、その親について知る必要はありません。

public class Item
{
    public int ItemId { get; set; }
    public int? PreviousItemId { get; set; }

    public virtual Item PreviousItem { get; set; }
}

ただし、これら3つになるため、何らかの理由でキーフィールドを使用したくありません。

ItemId
PreviousItemId
PreviousItem_ItemId

最後に余分なフィールドではなく、指定したフィールドを使用するようにします。私は注釈を試しました:

[ForeignKey("PreviousItemId")]
public virtual Item PreviousItem { get; set; }

また、流暢なAPIを使用:

public class ItemConfiguration : EntityTypeConfiguration<Item>
{
    public ItemConfiguration()
    {
        HasOptional(i => i.PreviousItem)
            .WithMany()
            .HasForeignKey(i => i.PreviousItemId);
    }
}

しかし、私はそれらの両方でこの例外を受け取ります:

System.InvalidOperationException: Sequence contains no elements
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GetQualifiedTableName(XDocument model, String entitySetName)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.<FindRenamedIndependentAssociationColumns>b__ba(<>f__AnonymousType16`2 <>h__TransparentIdentifieraa)
   at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
   at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
   at System.Linq.Enumerable.<DistinctIterator>d__81`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, String connectionString)
   at System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, DbMigration lastMigration)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   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.RunCore()
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
Sequence contains no elements

ここで私が間違っていることを誰かに教えてもらえますか? 読んでくれてありがとう。パッケージ マネージャー コンソールから update-database を実行すると、例外が発生します。

4

0 に答える 0