为什么我的ASP.NET MVC无法将数据插入我的数据库?

时间:2014-09-19 06:42:45

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我使用ASP.NET MVC创建了一个小型网站,但它无法从数据库中创建新的,编辑或删除数据。数据仅显示在网页上,但是当我在SQL中使用SELECT *命令时,数据不会显示。

我在webconfig中的连接字符串:

<add name="CodeFileDBContext"
  providerName="System.Data.SqlClient"
  connectionString="Data Source=HOANG-PC\SQLSERVER01;Initial Catalog=Ciaos;User Id=sa;Password=**********;MultipleActiveResultSets=True" />

型号:

namespace Ciao.Models
{
    public class CodeFile
    {
        [Key]
        public int ColdeFile_ID { get; set;}
        public string Website_Name { get; set;}
        public string Service_Name { get; set;}
        public DateTime Date_In { get; set;}
        public DateTime Date_Out { get; set;}
        public int Service_Status { get; set;}

    }
    public class CodeFileDBContext : DbContext
    {
        public DbSet<CodeFile> tbl_CodeFile { get; set; }
    }
}

控制器:

namespace Ciao.Controllers
{
    public class CodeFileController : Controller
    {
        private CodeFileDBContext db = new CodeFileDBContext();

        //
        // GET: /CodeFile/

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

        //
        // GET: /CodeFile/Details/5

        public ActionResult Details(int id = 0)
        {
            CodeFile codefile = db.tbl_CodeFile.Find(id);
            if (codefile == null)
            {
                return HttpNotFound();
            }
            return View(codefile);
        }

        //
        // GET: /CodeFile/Create

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

        //
        // POST: /CodeFile/Create

        [HttpPost]
        public ActionResult Create(CodeFile codefile)
        {
            if (ModelState.IsValid)
            {
                db.tbl_CodeFile.Add(codefile);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(codefile);
        }

        //
        // GET: /CodeFile/Edit/5

        public ActionResult Edit(int id = 0)
        {
            CodeFile codefile = db.tbl_CodeFile.Find(id);

            if (codefile == null)
            {
                return HttpNotFound();
            }
            return View(codefile);
        }

        //
        // POST: /CodeFile/Edit/5

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

        //
        // GET: /CodeFile/Delete/5

        public ActionResult Delete(int id = 0)
        {
            CodeFile codefile = db.tbl_CodeFile.Find(id);
            if (codefile == null)
            {
                return HttpNotFound();
            }
            return View(codefile);
        }

        //
        // POST: /CodeFile/Delete/5

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

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

3 个答案:

答案 0 :(得分:1)

将构造函数添加到CodeFileDBContext类:

例如:

public CodeFileDBContext() : base("Name=CodeFileDBContext")
{
    var adapter = (IObjectContextAdapter)this;
    var objectContext = adapter.ObjectContext;
    objectContext.CommandTimeout = 30; // value in seconds
}

答案 1 :(得分:0)

DbContext基类接受connectionstring name作为参数。尝试通过CodeFileDBContext

传递连接字符串名称

答案 2 :(得分:0)

您能否提供更多详细信息,您得到的确切错误是什么? 您应该检查的另一件事是模型中的每个数据成员都在该特定表中具有其列。如果他们的名字不完全匹配,请使用&#39;列&#39;属性。 例如,如果它们不匹配,请尝试:

[Column("Table_Id")] 
public int ID { get; set; }

如果它们都匹配,请添加表格&#39;属性,它以前帮了我很多次。

[Table("YourTableName")]
{
public class CodeFile....
}