Asp.net mvc 通过实体框架MVC在另一个表中插入数据
我想在学生表中保存学生的数据,在学生详细信息表中保存学生的地址。我无法在第二个表中插入数据 错误是对象引用未设置为对象的实例。 学生模型Asp.net mvc 通过实体框架MVC在另一个表中插入数据,asp.net-mvc,entity-framework,asp.net-mvc-4,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,我想在学生表中保存学生的数据,在学生详细信息表中保存学生的地址。我无法在第二个表中插入数据 错误是对象引用未设置为对象的实例。 学生模型 public partial class Student { public int Id { get; set; } public string Name { get; set; } public Nullable<System.DateTime> CreatedDate { get; set; } } public cl
public partial class Student
{
public int Id { get; set; }
public string Name { 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; }
}
行动
[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);
}
为什么不呢
public StudentDetail StudentDetails { get; set; }
在学生课堂上,为学生更改Id
public int StudentId { get; set; }
然后在StudentDetail中更改Id,以便
public int StudentId { get; set; }
与此类似,实体框架将能够以1:1的关系将它们连接起来。您必须根据需要添加一些主键/外键。为什么不添加
public StudentDetail StudentDetails { get; set; }
在学生课堂上,为学生更改Id
public int StudentId { get; set; }
然后在StudentDetail中更改Id,以便
public int StudentId { get; set; }
与此类似,实体框架将能够以1:1的关系将它们连接起来。您必须根据需要添加一些主键/外键。列名称是问题所在,我在Student表中的Id为PK,并用KEY修饰了它。你是否在Student类中添加了StudentDetail属性?为什么要这样做,它不会工作,因为当Student类运行时,它会抛出一个异常,说明找不到StudentDetail。是的,这是真的。在这种情况下,可能EF对Id名称很挑剔?将Id重命名为StudentId并清除了解决方案,同样的错误StudentDetails不是当前上下文模型的一部分。列名称是问题所在吗,我在Student表中的Id为PK,并用KEY修饰了它。你是否在Student类中添加了StudentDetail属性?为什么要这样做,它不会工作,因为当Student类运行时,它会抛出一个异常,说明找不到StudentDetail。是的,这是真的。在这种情况下,可能EF对Id名称很挑剔?将Id重命名为StudentId并清除了解决方案,同样的错误StudentDetails不是当前上下文的模型的一部分。model.StudentDetails.Id=model.Students.Id;新创建的Id出现在新表的Id.model.StudentDetails.Id=model.Students.Id中,但没有出现;新创建的Id出现在新表的Id中,但不会出现在新表的Id中。