ここでの質問は、2つの外部キーからなる複合主キーを生成する方法です。ASP.NETコアを持つ流暢なAPIの外部キーからなる複合主キーの作成
私が試してみました:
public class ActiveQuestions_Questions
{
[Column(Order = 0), Key, ForeignKey("ActiveQuestion")]
public string ActiveQuestionId {get; set;}
[Column(Order = 1), Key, ForeignKey("Question")]
public string QuestionId {get; set; }
}
私に与える:エンティティタイプ「をActiveQuestions_Questions」データの注釈で定義された複合主キーを持っています。複合主キーを設定するには、Fluent APIを使用します。
私はモデルビルダで流暢なAPIを使って注釈を使わずに試してみました。私を与えた
builder.Entity<ActiveQuestions_Questions>(
build =>
{
build.HasKey(t => new {t.ActiveQuestionId, t.QuestionId});
build.HasOne(t => t.QuestionId).WithOne().HasForeignKey<Question>(qe => qe.QuestionId);
build.HasOne(t => t.ActiveQuestionId).WithOne().HasForeignKey<ActiveQuestion>(qe => qe.ActivateQuestionId);
}
);
: ナビゲーションプロパティ「QuestionIdは」エンティティタイプ「ActiveQuestions_Questions」は同じ名前のプロパティが既にエンティティタイプ「ActiveQuestions_Questions」に存在するために追加することはできません。
正しい方向で私を指摘できる人はいますか?
質問クラス
public class Question
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string QuestionId {get; set;}
[Required]
public string Text {get; set;}
}
ActiveQuestionクラス:EFコアで
public class ActiveQuestion
{
private DateTime _lastUpdated = DateTime.Now;
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string ActivateQuestionId {get; set;}
public DateTime LastUpdated
{
get
{
return this._lastUpdated;
}
set
{
this._lastUpdated = value;
}
}
}
「Question」と「ActiveQuestion」エンティティ(少なくともPKプロパティとActiveQuestions_Questions関連ナビゲーションプロパティを含む)の関連部分を投稿できますか? –
@IvanStoev質問とActiveQuestionクラスを追加しました。 – Nyranith
ありがとうございます。私は現在掲示されている答えは、ケースをカバーしていると思います。それが明確でない場合は、PKの流暢な構成は正しいが、FKはどちらも正しくない。 'build.HasOne(t => t.QuestionId)'は 'build.HasOne()'にする必要があります 'build.HasOne ()'と 'build.HasOne(t => t.ActiveQuestionId)エンティティクラスにナビゲーションプロパティがないことを反映します。 –