99

エンティティ フレームワーク コードの最初の CTP5 で使用する POCO モデルを作成しています。装飾を使用して、プロパティを PK 列にマップしています。しかし、複数の列に PK を定義するにはどうすればよいでしょうか。具体的には、インデックス内の列の順序を制御するにはどうすればよいでしょうか? クラス内のプロパティの順序の結果ですか?

ありがとう!

4

4 に答える 4

158

属性で列の順序を指定できます。たとえば、次のようになります。

public class MyEntity
{
    [Key, Column(Order=0)]
    public int MyFirstKeyProperty { get; set; }

    [Key, Column(Order=1)]
    public int MySecondKeyProperty { get; set; }

    [Key, Column(Order=2)]
    public string MyThirdKeyProperty { get; set; }

    // other properties
}

Finda のメソッドを使用している場合はDbSet、キー パラメータのこの順序を考慮する必要があります。

于 2011-02-09T21:20:09.377 に答える
61

Slauma から送信された正解を完成させるために、HasKeyメソッドを使用して、複合主キーの順序も指定できます。

public class User
{        
    public int UserId { get; set; }       
    public string Username { get; set; }        
}        

public class Ctp5Context : DbContext
{
    public DbSet<User> Users { get; set; }        

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>().HasKey(u => new 
        { 
            u.UserId, 
            u.Username 
        });
    }
}
于 2011-02-09T21:24:44.817 に答える