MVC 数据库连接及model的映射

今天学了两种mvc数据库的连接方式,其实mvc对数据库的访问是通过EF框架实现的,所以

第一种方法就是老办法直接在web.config文件中定义

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.;DataBase=coffee;User ID=sa;password=123456"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

注意provider Name;下载EF框架的方式:工具——NuGET包管理器——解决方案NuGet程序包

MVC 数据库连接及model的映射

浏览——输入EntityFramework——选择好项目——安装

下载完成后其会主动在web.config里配置好provider Name节

另一个连接方式也需要安装ef……

步骤就截图了:

右击解决方案——添加——添加新项——数据——添加——

MVC 数据库连接及model的映射MVC 数据库连接及model的映射

MVC 数据库连接及model的映射

查看到mdf文件MVC 数据库连接及model的映射


视图——服务器资源管理器

MVC 数据库连接及model的映射

今天在弄model的时候遇到一个很尴尬的问题,目前还是没有解决掉,就是已经在数据库里建好的表,然后在设置model,可是就是这里出错了

MVC 数据库连接及model的映射

数据迁移

工具——NuGet包管理器——程序包管理器控制台——输入Enable-Migrations

主动添加文件

MVC 数据库连接及model的映射

增加迁移代码:Add-Migration Add_Annotation_Name_Major

更新到数据库:Update-Database

结果还是不行,因为已经存在该表了,然后我把表删掉后自行就添加同一个名字的表到数据库中,项目就运行顺利了……有谁知道不用删除原来的表,然后可以用的吗?有存在只是我不知道……

数据库数据简单读取显示

右击controllers文件创建test_ModelController

右击models文件创建test_Models.cs文件

MVC 数据库连接及model的映射

在添加控制器的时候,views里就主动填加了test_Models文件夹,右击文件添加Index视图

代码(注意引用命名空间):

model及继承dbcontext类的类(dbcontext是ef里的数据上下读取工具):

public class test_Models

{

  public int ID { get; set; }
        [Required]
        [StringLength(20)]//字段长度
        public string NAME { get; set; }

}

public class testDbContext : DbContext
    {

         public testDbContext():base("DefaultConnection"){}//DefaultConnection是web.config配置的连接字符串的key(name)

                public DbSet<test_Models> test{get;set;}

     }

MVC 数据库连接及model的映射

控制器Index里的代码:

private testDbContext db=new testDbContext();

public ActionResult Index()

{

      db.test.Where(p=>p.ID==1);//lamdb表达式

       List<Models.test_Models> list=db.test.Where(p=>p.ID==1).ToList();

       List<Models.test_Models> list2=(from p in db.test select p).ToList();//linq

       ViewData["DataList"]=list2;//list

       return View("index");

}

视图:

@using WebApplication3.Models;(Model的命名空间)

@model IEnumerable<WebApplication3.Models.test_Models>

利用循环读取数据

@foreach(test_Models a in ViewData["DataList"] as List<test_Models>)

{

@a.ID  @a.NAME

}

好了……