Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 通过实体框架MVC在另一个表中插入数据_Asp.net Mvc_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

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中。