【问题标题】:Creating a child object in ASP.NET MVC3在 ASP.NET MVC3 中创建子对象
【发布时间】:2011-05-20 17:24:09
【问题描述】:

我使用 Entity Framework 4 基于我的(空)数据库创建了一个类模型,并按照 this tutorial 为每个类型继承设置了一个表,Student 和 Professor 继承了抽象 Person类。

一切正常,然后我继续创建Student 控制器,生成的用于创建学生的代码不起作用。我现在无法访问我的代码,所以我无法粘贴它,但Create 函数是这样的:

function create(Student student){
    db.person.AddObject(student);
    db.person.SaveChanges();
}

这给了我一个错误,说无法添加 Student,因为数据库中没有具有相应键的 Person。我对 asp.net 很陌生,但我相信数据库上下文在尝试插入学生表之前不会插入一个人。

很抱歉,我无法提供更多细节,例如数据库设计图片或实际代码,但这是我目前能做的最好的。

谢谢!

【问题讨论】:

  • 发布代码,没有它只是猜测
  • @vittore 我知道这还不够,我希望我能提供更多信息,但我现在无法访问代码。尽管如此,我很确定我发布的摘录是我创建 Student 控制器时搭建的代码(我已经看了这么多小时,它已经在我的视网膜上燃烧了)
  • 这个create函数是怎么调用的,student是什么?是表单中的数据吗?
  • 创建 StudentController 时,它会生成重载的 Create 方法,该方法通过 HTTP post 从表单接收 Student 对象。该视图有一个具有Student 的所有属性的表单(继承的和特定的)。提交表单后,控制器使用此数据创建一个Student 对象并将其传递给上面的create 方法。希望这会有所帮助。

标签: c# asp.net-mvc entity-framework asp.net-mvc-3 inheritance


【解决方案1】:

现在看

datacontext    mainTable   subTable   what is needed to do.

   "db"     .  "person"  . "student" . blablabla

据我所知,db 是您的数据库上下文,而 person 是您的表,您正在调用一个需要与“person”建立关系的子表“student”。所以在你的数据库中,确保你有一个“人”和“学生”表的键,并确保你有它们之间的关系。

如果你能提供更多信息,我可以提供更多帮助,但现在基于你的信息,这是我唯一可以分享的知识..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多