0

この質問は、答えられなかったこの質問に関連しています。ただし、ここにはもっと現実的な例があります。助けを期待しています。

オークション、入札、オークション詳細(フラットテーブル)のクラスがあります。入札をオークションに含めようとしていますが、auctiondetailテーブル、auctionとauctiondetailのPKは同じです。

using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations;

namespace OnCall.VirtualWarehouse.Data.Models.Auctions
{
    using System;

    public class AuctionCopy
    {
        public Guid AuctionCopyId { get; set; }

        public virtual Collection<BidCopy> BidCopies { get; set; }

    }

    public class BidCopy
    {
        public Guid BidCopyId { get; set; }

        public Guid AuctionCopyId { get; set; }

        public AuctionCopy AuctionCopy { get; set; }


    }

    public class AuctionDetailCopy
    {
        [Key]
        public Guid AuctionCopyId { get; set; }

        public virtual Collection<BidCopy> BidCopies { get; set; }
    }

}

これが私のDBContextです:

public class DataContext : DbContext
{
    static DataContext()
    {
        Database.SetInitializer(new DropCreateIfChangeInitializer());
    }

    public DataContext()
    {
        Configuration.ProxyCreationEnabled = false;
    }

    public IDbSet<AuctionCopy> AuctionCopy { get; set; }

    public IDbSet<BidCopy> BidCopy { get; set; }

    public IDbSet<AuctionDetailCopy> AuctionDetailCopy { get; set; }

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

        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    }

    public void Seed(DataContext context)
    {

    }
}

データベースを生成すると、

    The operation failed because an index or statistics with name 'IX_AuctionId' already exists on table 'Bids'. 

これを機能させる方法はありますか?

4

1 に答える 1

1

このバグは EF4.3 (および 4.3.1) に由来します。次のリリースで修正する必要があります。

Entity Framework 4.3.1 へのアップグレード後の未処理の例外をご覧ください。彼らは、移行システムを使用した回避策を目的としています。

于 2012-08-07T08:59:09.653 に答える