0

複合キーで再帰関係を定義する必要がありました。多くの試行錯誤の後、私はこれに行き着きました:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<Category>()
            .Property(t => t.WhichAmazon).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        modelBuilder.Entity<Category>()
            .Property(t => t.IdCategory).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        modelBuilder.Entity<Category>()
           .HasKey(c => new {c.WhichAmazon, c.IdCategory})
           .HasOptional(p => p.Children)
           .WithMany()
           .HasForeignKey(c => new { c.WhichChildrenAmazon, c.ChildrenId });                                                                          
    }

このテーブルの

public class Category
{
    // Keys and relationships defined in BooksDataLayer
    [MaxLength(2)]
    public string WhichAmazon { get; set; }
    public int IdCategory { get; set; }        
    public string Name { get; set; }
    [Timestamp]
    public Byte[] TimeStamp { get; set; }        
    public DateTime LastCheck { get; set; }
    public virtual List<Book> Books { get; set; }
    public string WhichChildrenAmazon { get; set; }
    public int? ChildrenId { get; set; }        
    public virtual List<Category> Children { get; set; }
}

Add-Migration を試みている間、「シーケンスには要素が含まれていません」という同じエラーが常に発生していました。この定義が正しいと「ほぼ」確信していたので、移行せずに新しいデータベースを再作成しました。完全に問題ありませんでした。Db にはまったく問題はありませんでした。したがって、そこには EF 6 が気に入らない「何か」があります。「呼び出しのターゲットによって例外がスローされました」というスキーマを取得しようとすると、EFパワーツールが爆撃するため、確認がありました。

そこから再起動すればマイグレーションがどうなるか見ていきますが、このDbではもう使えないのではないかと心配です。私はこのツールがとても好きなので、これが修正されることを願っています.

4

2 に答える 2

0

EF codeplex サイトでこのバグをオープンしました: http://entityframework.codeplex.com/workitem/1015

于 2013-04-03T17:12:34.660 に答える