主にPHPの背景から来た.NET MVC 5の新機能です。私はそれにリストコレクションと 'プロジェクト'モデルがあります。テストコントローラを使ってコレクションにデータを保存すると、データベースに保存されます。MVC NET 5のリンクされたモデルはデータベースに保存されますがロードされません。
いつもヌルとして戻ってくるので、私はそのコレクションから情報を取り出そうとしているときに問題が発生します。
public class Project
{
public int ID { get; set; }
[Display(Name = "Project")]
public string ProjectNumber { get; set; }
[Display(Name = "Client")]
public string Client { get; set; }
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[Display(Name = "Start Date")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime StartDate { get; set; }
[Display(Name = "Required Date")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime RequiredDate { get; set; }
public string ProjectManagerId { get; set; }
[ForeignKey("ProjectManagerId")]
[Display(Name = "Project Manager")]
public ApplicationUser ProjectManager { get; set; }
[Display(Name = "Project Members")]
public int[] ProjectMembers { get; set; }
[Display(Name = "Tasks")]
public List<ProjectTask> TaskCollection { get; set; }
}
public class ProjectDb : DbContext
{
public ProjectDb() : base("DefaultConnection")
{
}
public DbSet<Project> Projects { get; set; }
}
マイProjectTaskモデル:: パブリッククラスProjectTask {
public int Id { get; set; }
public int ProjectId { get; set; }
[ForeignKey("ProjectId")]
public virtual Project Project { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string TaskNotes { get; set; }
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime StartDate { get; set; }
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime DueDate { get; set; }
public int Duration { get; set; }
public TaskStatus Status { get; set; }
public TaskAlertLevel AlertLevel { get; set; }
public List<ProjectTask> SubTasks { get; set; }
public string Progress { get; set; }
}
public class ProjectTaskDb : DbContext
{
public ProjectTaskDb() : base("DefaultConnection")
{
}
public DbSet<Project> ProjectTasks { get; set; }
}
私はちょうどヌル例外以外のものを見しようとしている
マイコントローラ:
マイプロジェクトモデル
public ActionResult DetailTasks(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Project project = db.Projects.Find(id);
if (project == null)
{
return HttpNotFound();
}
var tasks = project.TaskCollection;
ViewBag.tasks = tasks;
return View(project);
}
うまくいけばそれはsom今すぐ私を逃れる完全に明白で愚かな何か!
実際にDBに保存してもよろしいですか? db.Projects.Add(何でも)を呼び出している場合。 db.SaveChanges()を呼び出さない。その後、実際にデータベースに保存されることはありません。ソフト・アドを行いますが、変更をコミットしません。 –
私はdb.Projects.Add(プロジェクト)とdb.SaveChanges()を呼び出しているので、間違いなく保存しています。テストデータは生のデータベーステーブルにも現れます。訪問することは決してありません。 –
あなたのID列が主キーとして実際にマークされているかどうかをチェックし、それ以外の場合は[Key]データ属性を上に置き、新しいマイグレーション/アップデートデータベースを追加することをお勧めします。 それでもまだ動作している場合は、 にプロジェクトのプロジェクト= db.Projects.where(a => a.ID == id).FirstOrDefault();と入力してください。 –