2014-10-07 42 views
1

我已经搜索了一个解决方案来解决我手边的障碍几天,但是我还没有找到需要继续的东西,我被卡住了!插入表格中的数据库中的多个表

我想要做的是将“firstName”,“lastName”和“subject”注册到数据库中的两个表中,其中一个表包含名和姓。第二张表只包含课程。

我发现在stackoverflow中有很多类似于这个主题的帖子,但由于某些原因,我无法解决这些例子。

的视图:

<form action="/Default/Page" method="post"> 
    <input type="text" name="firstName" /> 
    <input type="text" name="lastName" /> 
    <input type="text" name="subject" /> 
    <input type="submit" value="submit" /> 
</form> 

控制器:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using WebApplication2.Models; 
using System.Data; 
using System.Data.Entity; 

namespace WebApplication2.Controllers 
{ 

public class DefaultController : Controller 
{ 

    [HttpPost] 
    public ActionResult page(FormCollection collection) 
    { 
     App2Context db = new App2Context(); 
     Model dat = new Model(); 

     dat.Pupil.First = collection["firstName"]; 
     dat.Pupil.First = collection["firstName"]; 
     dat.Study.Subject = collection["Subject"]; 

     return View("Page2"); 
    } 
    } 
} 

模型:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace WebApplication2.Models 
{ 

public class Model 
{ 
    public Name Pupil { get; set; } 
    public Course Study { get; set; } 
} 

public class Name 
{ 
    public string First { get; set; } 
    public string Last { get; set; } 
} 

public class Course 
{ 
    public string Subject { get; set; } 
} 

} 

的的DbContext类包含两个DbSets它们的名称和课程。

我到目前为止所尝试的是使用上下文类中的对象,但智能感知只显示db.savechanges()它没有向我提供将对象dat添加到数据库中的方法。我尝试了一些LINQ查询,但由于我对查询不太熟悉,所以我只是被卡住了。

查询:

var data = from s in db.Names where dat.Pupil.First equals 

然后我的IDE只是有红色的波浪线,并且不显示任何的IntelliSense支持。

如何使用实体框架将我试图通过表单收集的信息输入数据库中的两个表中?

如何使用LINQ查询将相同的信息输入到表中?

回答

-1

对于其中必须从内部

var data = from s in db.Names where s.Name equals dat.Pupil.First 

否则第一个参数:

<form action="/Default/Page" method="post"> 
    <input type="text" name="firstName" /> 
    <input type="text" name="lastName" /> 
    <input type="text" name="subject" /> 
    <input type="submit" value="submit" /> 
</form> 

如果你的EF样子:

public Class App2Context : DbContext 
{ 
    public DbSet<Model> Models {get;set;} 
} 

,但更好的办法的:

public Class App2Context : DbContext 
{ 
    public DbSet<Name> Names {get;set;} 
    public DbSet<Course> Courses {get;set;} 
} 

然后在您的应用程序:

public ActionResult page(FormCollection collection) 
{ 
    App2Context db = new App2Context(); 
    Model dat = new Model(); 

    dat.Pupil.First = collection["firstName"]; 
    dat.Pupil.Last = collection["lastName"]; 
    dat.Study.Subject = collection["Subject"]; 

    db.Models.Add(dat); 
    db.SaveChanges(); 

    return View("Page2"); 
} 
+0

我收到一个错误System.Data.Entity.Infrastructure。DbUpdateException:更新条目时发生错误 – venichhe 2014-10-07 17:44:43

+0

它解释了你有其他结构在表和其他结构你想要发送到数据库。请详细说明。 – W92 2014-10-07 18:23:19

+0

更好的方式来创建两个表格:名称和课程 – W92 2014-10-07 19:22:44

0

在这种情况下,你可以使用如下插入使用LINQ的数据到数据库中。

db.Models.Add(dat); 
db.SaveChanges(); 

将模型添加到数据库上下文后,您必须使用SaveChanges()方法。

相关问题