エンジニアとマネージャーのモデルは、人物モデルから継承します。人物モデルには、姓、名、人物IDが含まれています。変更モデルには、エンジニアやマネージャーのすべての詳細、ステータス、すべての遅延ロードがあります。2つのモデルの情報を別のモデルから継承できないのはなぜですか?
初期化子のシードデータを使用して以下のコードを試してみると、エンジニア列とマネージャー列は空白です。変更モデルで "EngineerId"の代わりに変数 "PersonId"を使用し、ManagerIdまたはEngineerIdを除外しない限り、そのユーザーの個人モデルの詳細にアクセスすることはできません。私は同じモデルから継承しているManagerも持っているので、EngineerIdを使用する必要があります。私は両方の名前がインデックスに表示する必要があります。 EngineerIdがEngineerモデルを参照していること、またはManagerIdがPersonから継承したManagerモデルを参照していることはわかりません。ですから、初期化中にIdをそこに置くと、そのIDが何を指しているのかを判断できないようです。私はこのアプリケーションでユーザーの単一のセットが欲しいので、私は継承を使用する必要があります。私は間違って何をしていますか?
StatusNameとSystemNameを表示しても何の問題もなく、index.cshtmlにエンジニアがPersonの一部であることを確認しても問題ありませんが、それは設定されているからです変更モデルのそのように。 EngineerIdとそれに関連するPersonIdの間には何らかの切断があります。ここで
は変更モデルです:
public class Change
{
[Key]
public int ChangeId { get; set; }
[Required(ErrorMessage = "Change description is required.")]
[Display(Name = "Change Description")]
public string ChangeDescription { get; set; }
[Required(ErrorMessage = "Change date is required.")]
[Display(Name = "Change Date")]
public DateTime ChangeDate { get; set; }
[Required(ErrorMessage = "Engineer name is required.")]
[Display(Name = "Engineer")]
public int EngineerId { get; set; }
[Required(ErrorMessage = "Status is required.")]
[Display(Name = "Status")]
public int StatusId { get; set; }
[Required(ErrorMessage = "Manager is required.")]
[Display(Name = "Manager")]
public int ManagerId { get; set; }
[Required(ErrorMessage = "System is required.")]
[Display(Name = "System")]
public int SystemDetailId { get; set; }
public virtual Engineer engineer { get; set; }
public virtual Status status { get; set; }
public virtual SystemDetail systemdetail { get; set; }
public virtual Manager manager { get; set; }
}
ここでは人のモデルがあります:
public class Person
{
[Key]
public int PersonId { get; set; }
[Required(ErrorMessage = "The First Name field is required.")]
[Display(Name = "First Name")]
[MaxLength(50)]
public string FirstName { get; set; }
[Required(ErrorMessage = "The Last Name field is required.")]
[Display(Name = "Last Name")]
[MaxLength(50)]
public string LastName { get; set; }
[NotMapped]
[Display(Name = "Name")]
public string FullName
{
get
{
return FirstName + " " + LastName;
}
}
}
ここで例えばエンジニアのモデルです:
public class Engineer : Person
{
public ICollection<Manager> managers { get; set; }
}
これは、インデックスが思い付くものですビューが変更コントローラーの作成から生成されたとき。
OHおよび変化コントローラ:
public class ChangeController : Controller
{
private ChangeContext db = new ChangeContext();
// GET: Change
public ActionResult Index()
{
var changes = db.changes;
return View(changes.ToList());
}
}
はあなたがPK持っていると、データベースにsetted FKますか? – Hadee
@Hadee私はこのチュートリアルを視聴した後にアプリを作るための私の最初の努力です。あなたは主なキーですか? Personから継承したモデルを除くすべてのモデルに設定されています。おそらく私はEngineerIdとManagerIdをこれら2つのモデルに追加すべきでしょうか?問題はPersonIdを使用することです。 –
データベースとpkとfkが設定されていますか?もしそうなら、データベースの最初のアプローチを使用しますか? – Hadee