注:この質問では、モデルを少し簡略化しました。Entity FrameworkはApplicationUser外部キーを生成しません
私はASP.NET Core MVCアプリケーション(Entity Framework Coreを使用)で作業しています。私は3つのモデルを持っています。私はApplicationUser(IdentityUserから拡張しています)を持っています。私はActivityモデルを持っていて、Activityへの外部キーとApplicationUserへの外部キーを持つSignUpモデルを持っています。少なくとも、それは考えです。つまり、Entity FrameworkはアクティビティFKをFKとして認識しますが、アプリケーションユーザは認識しません。これは、FK制約なしでデータベース内の別のintになります。
私はインターネットで見つけたことをたくさん試しましたが、うまく動作しません。これは私が現在、(明確にするために短縮)したものである:
活動:
public class Activity
{
public Activity()
{
SignUps = new HashSet<SignUp>();
}
public int ActivityID { get; set; }
[Required]
[StringLength(50)]
[Display(Name = "Naam")]
public string Name { get; set; }
public virtual ICollection<SignUp> SignUps { get; set; }
}
ApplicationUser:
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
Activities = new HashSet<Activity>();
}
[Required]
[Display(Name = "Voornaam")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Achternaam")]
public string LastName { get; set; }
public virtual ICollection<Activity> Activities { get; set; }
}
新規アカウント:
public class SignUp
{
public int SignUpID { get; set; }
[Required]
public int ActivityID { get; set; }
[ForeignKey("ApplicationUser")]
public int ApplicationUserID { get; set; }
[Required]
public string Status { get; set; }
}
注:私が最初に持っていませんでした[ForeignKey]属性(アクティビティのような)ですが、それを動作させるためにそこにあります。
上記のとおり、SignUpのアクティビティFKは正常に動作しますが、Applicationuser FKはうまく動作しません。 Entity FrameworkはFK制約なしでデータベースにintを生成するだけで、CRUDページをスキャフォールするときにもFKとして認識されません。
私はASP.net MVCとEFにはかなり新しく、私は非常にシンプルなものを見落としていると感じています。 Facepalm moment incoming?
ありがとうございます!
私はすでに期待していたフェイスパルムの瞬間です... SignUpの代わりに、おそらく数時間アシスタンスを見落としました。ああ、時には、あなたがそれをあまりにも長く見ていると、見逃してしまうことがあります。ありがとう!私はあなたの助けに感謝します :) – Landcross