gpt4 book ai didi

c# - 使用 Entity Framework 在数据库中创建表

转载 作者:行者123 更新时间:2023-11-30 17:01:59 25 4
gpt4 key购买 nike

我正在尝试使用 Entity Framework 将我的 MVC 项目与数据库链接起来,但我不知道如何将新记录存储到数据库中。到目前为止,我有以下代码:

//model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using MvcApplication1.Controllers;

namespace MvcApplication1.Models
{
public class CarUser
{
public int ID { get; set; }
[DisplayName ("First Name")]
public string Fname { get; set; }
[DisplayName ("Surname")]
public string Sname { get; set; }
}
}

//controller

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

namespace MvcApplication1.Controllers
{
public class CarUserController : Controller
{
private FormDataContext db = new FormDataContext();

//
// GET: /CarUser/

public ActionResult Index()
{
return View(db.CarUsers.ToList());
}

//
// GET: /CarUser/Details/5

public ActionResult Details(int id = 0)
{
CarUser caruser = db.CarUsers.Find(id);
if (caruser == null)
{
return HttpNotFound();
}
return View(caruser);
}

//
// GET: /CarUser/Create

public ActionResult Create()
{
return View();
}

//
// POST: /CarUser/Create

[HttpPost]
public ActionResult Create(CarUser caruser)
{
if (ModelState.IsValid)
{
db.CarUsers.Add(caruser);
db.SaveChanges();
return RedirectToAction("Index");
}

return View(caruser);
}

//
// GET: /CarUser/Edit/5

public ActionResult Edit(int id = 0)
{
CarUser caruser = db.CarUsers.Find(id);
if (caruser == null)
{
return HttpNotFound();
}
return View(caruser);
}

//
// POST: /CarUser/Edit/5

[HttpPost]
public ActionResult Edit(CarUser caruser)
{
if (ModelState.IsValid)
{
db.Entry(caruser).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(caruser);
}

//
// GET: /CarUser/Delete/5

public ActionResult Delete(int id = 0)
{
CarUser caruser = db.CarUsers.Find(id);
if (caruser == null)
{
return HttpNotFound();
}
return View(caruser);
}

//
// POST: /CarUser/Delete/5

[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
CarUser caruser = db.CarUsers.Find(id);
db.CarUsers.Remove(caruser);
db.SaveChanges();
return RedirectToAction("Index");
}

protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}

//formdatacontext

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

namespace MvcApplication1.Models
{
public class FormDataContext : DbContext
{
public DbSet<CarUser> CarUsers
{ get; set; }
}
}

//formdatainitialiser

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.IO;

namespace MvcApplication1.Models
{
public class FormDataInitializer : DropCreateDatabaseAlways<FormDataContext>
{
protected override void Seed(FormDataContext context)
{
base.Seed(context);

var CarUsers = new List<CarUser>
{
new CarUser {
ID = 1,
Fname = "Craig",
Sname = "Higginson",
}
};

CarUsers.ForEach(s => context.CarUsers.Add(s));
context.SaveChanges();

}
}

}

我的 web.config 文件中还有以下内容

<connectionStrings>
<add name="FormDataContext"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=FormData.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />

这一切都很好,当我导航到/caruser 时,我能够创建新记录。这些记录没有存储在我的数据库中。

如果我正确引用了数据库,我是否需要先在数据库中创建表,还是 Entity Framework 应该为我创建这个表?

最佳答案

如果您使用的是代码优先方法,那么 Entity Framework 将为您构建表格。看起来您没有使用 Code First,因此您将在数据库中创建表。我假设您使用的是实体数据模型 (.edmx)?如果是这样,您将在数据库中创建您的表,然后更新您的数据模型 (.edmx)。如果您尚未创建 .edmx 文件,则需要创建该文件 - .edmx 文件将包含您的所有 CRUD 操作。

我感到困惑的是,如果表不存在(即,如果您的数据模型表示的表没有映射到数据库中的实际表,因为它不存在)。所以,问题是,你的 table 已经存在了吗?如果是这样,则逐行检查代码以找出未保存记录的原因。如果不存在,则通过 SQL Server Management Studio(或类似工具)添加表,然后打开您的 .edmx 文件,右键单击出现的布局,单击“从数据库更新模型”。

关于c# - 使用 Entity Framework 在数据库中创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20475223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com