从表单插入数据库中的多个表

时间:2014-10-07 15:59:50

标签: c# sql linq entity-framework

我已经找到了解决我手头障碍数天的解决方案,但我还没找到我需要继续做什么,我被卡住了!

我要做的是将“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,即名称和课程。

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

查询:

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

然后我的IDE只有红色波浪线,并且不再显示智能感知支持。

如何使用Entity Framework将我尝试通过表单收集的信息输入到数据库中的两个表中?

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

2 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用以下方法使用LINQ将数据插入数据库。

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

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

答案 1 :(得分:-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");
}