今天学了两种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程序包
浏览——输入EntityFramework——选择好项目——安装
下载完成后其会主动在web.config里配置好provider Name节
另一个连接方式也需要安装ef……
步骤就截图了:
右击解决方案——添加——添加新项——数据——添加——
查看到mdf文件
视图——服务器资源管理器
今天在弄model的时候遇到一个很尴尬的问题,目前还是没有解决掉,就是已经在数据库里建好的表,然后在设置model,可是就是这里出错了
数据迁移
工具——NuGet包管理器——程序包管理器控制台——输入Enable-Migrations
主动添加文件增加迁移代码:Add-Migration Add_Annotation_Name_Major
更新到数据库:Update-Database
结果还是不行,因为已经存在该表了,然后我把表删掉后自行就添加同一个名字的表到数据库中,项目就运行顺利了……有谁知道不用删除原来的表,然后可以用的吗?有存在只是我不知道……
数据库数据简单读取显示
右击controllers文件创建test_ModelController
右击models文件创建test_Models.cs文件
在添加控制器的时候,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;}
}
控制器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
}
好了……