Ladislavの Independent Association に関する記事を読みました。彼がこのリンクで提供した情報を確認しました。情報は非常に役に立ち、光を当てます。ただし、アクセス権を与えられた既存のデータベースをモデル化したいと考えています。これには、 Users 、 Certificates 、および Quiz という 3 つのテーブルがあります。
最初は、モデリングは独立した協会だと思っていました。なんで?私のUsersテーブルには主キーのUserIDがあり、CertificatesテーブルにはPK CertIDと、外部キーと言える列UserIDがあります。1 対多の関係だと思ったときに、Users テーブルの一部の UserID が Certificates テーブルにないことに気付きました。ただし、証明書内のすべての UserID は、Users テーブルで見つけることができます。
私の質問は、独立した関連付けを使用する必要があるかどうかです。そうであれば、Users テーブルがプリンシパル クラスになり、Certificates が従属クラスになるようにする方法です。これは、Users テーブルの値を表示または取得し、asp.net mvc 3 アプリケーションの Certificate テーブルから値を読み取ることができるようにするためです。
上記のことを達成しようとしていることを示す以下のコードを修正してください。
public class Certificates
{
[Key]
public Users CertID { get; set; }
public int ID { get; set; }
public DateTime recvd { get; set; }
public int QuizID { get; set; }
}
public class Users
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string email { get; set; }
public ICollection<Certificates> Certificates { get; set; }
}
public class Quiz
{
public int QuizID { get; set; }
public string QuuizName { get; set; }
public int VolumeNo { get; set; }
public int mark { get; set; }
public ICollection<Certificates> Certificates { get; set; }
}
public class cpdContext : DbContext
{
public DbSet<Certificates> Certificates { get; set; }
public DbSet<Users> Users { get; set; }
public DbSet<Users> Quiz { get; set; }
最後に、これら 3 つのクラスからの情報を含む詳細ビューを表示して、ユーザー マークとテストを追加する方法を教えてください。私がモデル化したい関係は、クイズと証明書の間の 1 対多です。