1

Code First とデータ注釈を使用して Entity Framework 4.3 で課金データベースを作成しようとしていますが、データベースを作成しようとするたびにエラーが発生します。私が扱っているオブジェクトは次のとおりです。

public class ClientBase
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ClientID { get; set; }

    [Required]
    public string ClientName { get; set; }

    [Required]
    public bool IsActive { get; set; }

    [Required]
    public string ClientContactName { get; set; }

    [Required]
    public string ClientContactEmail { get; set; }

    public virtual List<PropertyBase> Communities { get; set; }
}

public class PropertyBase
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int PropertyID { get; set; }

    [ForeignKey("Client")]
    public int ClientID { get; set; }

    [Required, EnumDataType(typeof(BillingFrequency))]
    public BillingFrequency PropertyBillingFrequency { get; set; }

    [Required]
    public bool IsActive { get; set; }

    [Required]
    public string PropertyName { get; set; }

    public string PropertyStreet { get; set; }

    public string PropertyCity { get; set; }

    public string PropertyState { get; set; }

    public int PropertyZipCode { get; set; }

    public virtual ClientBase Client { get; set; }
}

何をしようとしても、常に次のエラーが発生します。

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

Fluent API を使用してこの質問に対する解決策を見てきましたが、データ注釈の解決策は見つかりませんでした。

誰でもこれを修正する方法を知っていますか?

編集: DbContext のコードは次のとおりです。

public DbSet<ClientBase> ClientBases { get; set; }
public DbSet<PropertyBase> PropertyBases { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        base.OnModelCreating(modelBuilder);
    }
4

1 に答える 1

1

修正しました。ClientBase との外部キー関係を持つ別のクラスを作成したことを忘れていたことが判明しました。それを仮想プロパティとして ClientBase に取り込むのを忘れていましたが、Entity Framework は私に満足していませんでした。私がそれを含めたとき、それは完全に機能しました。

助けてくれてありがとう!

于 2012-05-04T13:20:26.317 に答える