0

EFリバースコードファーストツールが複合キーを生成しています

public vw_ResourcesMap()
    {
        // Primary Key
        this.HasKey(t => new { t.Refno, t.Obsolete }); // Why???

        // Properties
        this.Property(t => t.Refno)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        this.Property(t => t.Name)
            .HasMaxLength(50);

        this.Property(t => t.LocnID)
            .IsFixedLength()
            .HasMaxLength(2);

        this.Property(t => t.Created_by)
            .HasMaxLength(50);

        // Table & Column Mappings
        this.ToTable("vw_Resources");
        this.Property(t => t.Refno).HasColumnName("Refno");
        this.Property(t => t.Name).HasColumnName("Name");
        this.Property(t => t.Head).HasColumnName("Head");
        this.Property(t => t.LocnID).HasColumnName("LocnID");
        this.Property(t => t.Obsolete).HasColumnName("Obsolete");
        this.Property(t => t.Created_by).HasColumnName("Created_by");
        this.Property(t => t.Version).HasColumnName("Version");
        this.Property(t => t.Rank).HasColumnName("Rank");
    }
}

関係をマップするために主キー宣言を変更する必要がthis.HasKey(t => t.Refno)ありました。そうしないと、以下の例外が発生します。

リレーションシップ制約の従属ロールとプリンシパルロールのプロパティの数は同じである必要があります。

多分それはバグです-IDK

すべてが機能していますが、理解と知識を増やしたいと考えています。

ありがとう!

4

1 に答える 1

0

データベースビューには主キーがないため、EFは、バイナリデータ型を使用しないnull許容でないすべての列を使用してキーを推測しようとします。

于 2012-05-24T22:17:59.073 に答える