エンティティフレームワークコードで最初に使用するPOCOモデルを作成します。私はデコレーションを使用して、PK列へのプロパティマップを作成しています。しかし、どのように複数の列にPKを定義することができますか?具体的には、どのようにインデックスの列の順序を制御できますか?クラスのプロパティの順序の結果ですか?を最初に使用する方法複数の列でKeyAttributeを使用する方法
ありがとうございます!
エンティティフレームワークコードで最初に使用するPOCOモデルを作成します。私はデコレーションを使用して、PK列へのプロパティマップを作成しています。しかし、どのように複数の列にPKを定義することができますか?具体的には、どのようにインデックスの列の順序を制御できますか?クラスのプロパティの順序の結果ですか?を最初に使用する方法複数の列でKeyAttributeを使用する方法
ありがとうございます!
あなたは、例えば、属性で列の順序を指定することができます:あなたはDbSet
のFind
方法を使用している場合
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
}
アカウントへの重要なパラメータのために、この注文を取る必要があります。
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
});
}
}
をあなたは(Manaviの例に基づいて)このような方法でそれを行うことができますファイル:
public class User
{
public int UserId { get; set; }
public string Username { get; set; }
}
public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
ToTable("Users");
HasKey(x => new {x.UserId, x.Username});
}
}
を明らかにあなたのコンテキストにコンフィギュレーションファイルを追加する必要があります。
匿名オブジェクトとしてpublic class Ctp5Context : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfiguration());
}
}
用途:
modelBuilder.Entity<UserExamAttemptQuestion>().ToTable("Users").HasKey(o => new { o.UserId, o.Username });
おかげで - 両方の方法がうまく動作します。私はコードからクラスを生成しているので属性を優先し、属性ははるかに簡潔です。 – GilShalit
個人的には、それぞれのキー付きプロパティにPropety(x ...)。HasColumnOrder(0 ... n)を追加します。それは良い、悪い、無関心ですか? – Suamere