2016-05-28 19 views
1

生徒のデータを生徒のテーブルに保存したいと思います。生徒の詳細テーブルにそのアドレスを保存したいのですが、2番目のテーブルにデータを挿入できません。エンティティフレームワークを介して別のテーブルにデータを挿入するMVC

エラーは、オブジェクト参照がオブジェクトのインスタンスに設定されていません。

学生モデル

public partial class Student 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public Nullable<System.DateTime> CreatedDate { get; set; } 
} 

StudentDetails

public partial class StudentDetail 
{ 
    public int Id { get; set; } 
    public string Address { get; set; } 
    public Nullable<System.DateTime> CreatedDate { get; set; } 
} 

ビューモデル

public class StudentViewModel 
{ 
    public Student Students { get; set; } 

    public StudentDetail StudentDetails { get; set; } 

} 

DbSet

public partial class SampleEntities : DbContext 
{ 
    public SampleEntities() 
     : base("name=SampleEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 


    public System.Data.Entity.DbSet<Basics.Models.Student> Students { get; set; } 

    public System.Data.Entity.DbSet<Basics.Models.StudentDetail> StudentDetails { get; set; } 
} 

コントローラ

private SampleEntities db = new SampleEntities(); 

アクション

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(StudentViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     model.Students.CreatedDate = DateTime.Now; 
     db.Students.Add(model.Students); 
     db.SaveChanges(); 
     //The Newly created Id gets created and when saving that Id in anothr table the exception comes 
     model.StudentDetails.Id = model.Students.Id; 
     //For Time Being in real time it won't be hard coded 
     model.StudentDetails.Address = "New Jersey"; 
     db.StudentDetails.Add(model.StudentDetails); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(model.Students); 
} 
+0

model.StudentDetails.Id = model.Students.Id;新しく作られたIdは来るが、新しいテーブルのIdには入っていない。 – Dave

答えて

0

なぜ持っていない

​​Studentクラスで

とも

public int StudentId { get; set; } 

Entity Frameworkのは、1対1の関係でそれらを結合することができることなどのためにStudentDetailにIDを変更し、その後

public int StudentId { get; set; } 

のIDを変更すると。必要に応じて、主キー/外部キーを追加する必要があります。

+0

カラムに問題がありますが、私はIDとしてStudentテーブルにIDを持っていて、KEYでそれを飾っても同じ問題です。 – Dave

+0

StudentクラスのStudentDetailプロパティを追加しましたか? – PmanAce

+0

これを行う理由は、Studentクラスを実行するときにStudentDetailが見つからないという例外をスローするように動作しません。 – Dave

関連する問題