在MVC3中使用code first生成数据局库并操作数据库
1.建立Users和UserInfos两个实体类 对应的是数据库中的表
public class User
{
//类名+Id(User+Id)组成的字符串在数据库表中会设置该字段是主键且是按1的增量增长
public int UserId { get; set; }
public string UserName { get; set; }
}
UserInfos表
public class UserInfo
{
public int UserInfoId { get; set; }
public string UserAddr { get; set; }
public int UserTel { get; set; }
public char Sex { get; set; }
public int UserPost { get; set; }
//这里表之间的联系,User实体与UserInfo,会把User表的主键生成对应生成UserInfo表外键
public virtual User User { get; set; }
}
自动生成数据库表:

2.建立一个操作数据库的实体类EntityFrameworkModel,必须继承DbContext(通过此类来操作数据库),该类里面的 Users和UserInfos就是在数据库中生成的表
//管理数据实体(对应数据库中的表);通过这个类可以完成对数据增删改查
public class EntityFrameworkModel : DbContext
{
//根据这里字段名生成是数据库的表名
public DbSet<User> Users { get; set; }
public DbSet<UserInfo> UserInfos { get; set; } }
3.在配置文件中添加连接数据库的的字符串 注:配置文件的 name值 必须与 操作数据库的实体类的类名 一致
<connectionStrings>
<!--注意这里的name的值必须与管理数据实体类名一样,否则会无法生成数据库-->
<!--连接字符串connectionString的database的值可任意,该值就是对应数据库名-->
<add providerName="System.Data.SqlClient" name="EntityFrameworkModel"
connectionString="Server=.;Database=EntiyFrameWork;Integrated Security=true"/>
</connectionStrings>
上面的操作就可以生成一个无数据的数据库了 当然你也可以在代码实现在数据库生成的时候给数据库加载数据
创建一个加载数据的LoadData类(这里我就每个表添加两条数据了)
//这里要继承 :DropCreateDatabaseIfModelChanges<EntityFrameworkModel>类,
//当模型类结构改变的时候就会重新加载数据(这里的模型类就是User UserInfo)
public class LoadData:DropCreateDatabaseIfModelChanges<EntityFrameworkModel>
{ protected override void Seed(EntityFrameworkModel context)
{
//创建User集合
List<User> users = new List<User>{
new User(){UserName="张三"},
new User(){UserName="金三胖"}
};
//创建UserInfo集合
//User=users.Single(u=>u.UserName=="张三") 用linq表达式添加数据(实际是把user表的id添加到userinfo中)
List<UserInfo> userlist = new List<UserInfo> {
new UserInfo(){ Sex='n', User=users.Single(u=>u.UserName=="张三"), UserAddr="天国", UserTel=119, UserPost=11},
new UserInfo(){ Sex='s', User=users.Single(u=>u.UserName=="金三胖"), UserAddr="天国", UserTel=119, UserPost=22},
};
//把数据添加到管理数据实体中,通过这个实体吧数据加载到数据库中
foreach(UserInfo u in userlist){
context.UserInfos.Add(u);
} }
}
注意:还需在全局文件中的Application_Start()加上一句加载数据库数据的代码
protected void Application_Start()
{
//当网站第一次运行时就加载数据库数据
System.Data.Entity.Database.SetInitializer(new Entity_Framework的使用.Models.LoadData());//向数据库添加数据
//System.Data.Entity.Database.SetInitializer(new OdeToFoodDBInitializer());
AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
这样当数据库生成的时候就可以加载数据了
在控制器中操作数据库就可以了,,这样就不用通过编写大量的sql语句来查询数据了
public ActionResult Index()
{
int count = ef.Users.Count();//获得User表总共有多少条
List<User> u = ef.Users.ToList();//获得User的全部数据;
User user = ef.Users.FirstOrDefault(us => us.UserId == 1);//获得id为1的数据 //ef.Users.Remove(new User(){ UserId=1});//删除数据,这里传通过一个User实体来删除数据
//ef.SaveChanges();执行删除 //ef.Users.Add(new User() { UserName = "新增数据" });//添加数据,这里传通过一个User实体来添加数据
//ef.SaveChanges();执行添加 //更新数据 首先要查询该条数据 然后更新该实体的值 最后执行mbsc.SaveChanges();就可以更新成功了
//user.UserName = "更新了";//把刚刚查询出的数据更改名字
//ef.SaveChanges();return View();
}
好了这次就说到这里··如有错误欢迎大家指正~!!!
在MVC3中使用code first生成数据局库并操作数据库的更多相关文章
- 重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不 ...
- python生成数据后,快速导入数据库
1.使用python生成数据库文件内容 # coding=utf-8import randomimport time def create_user(): start = time.time() ...
- MVC3学习:基于ObjectContext的数据增删改查操作
数据库里面的表格,映射为对应的实体类.实体类的编写,可以自己手动编写,也可以使用工具或插件自动生成.在MVC3里面,我们可以使用VS的POCO插件自动生成实体类.如下图: 关于POCO插件的安装与使用 ...
- 利用Sql实现将指定表数据导入到另一个数据库示例
因为工作中经常需要将数据从一个数据库导入到另一个数据库中,所以将这个功能写成一个存储过程,以方便调用.现在粘贴出来供大家参考: 注意:1,以下示例中用到了syscolumns,sysobjects等系 ...
- java web从零单排第十七期《struts2》数据标签库(1)
1.s:action标签: 此标签的作用是在JSP页面中访问action类的数据,执行某些操作,并返回相应的数据.其属性及意义如下: 属性名 是否必需 默认值 类型 说明介绍 executeResul ...
- ASP.NET MVC3中Controller与View之间的数据传递总结
一. Controller向View传递数据 1. 使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...
- ASP.NET MVC3中Controller与View之间的数据传递
在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一. Controller向Vie ...
- EF 中 Code First 的数据迁移以及创建视图
写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功 ...
- java 通过接口在后台管理器中生成数据
需求:测试人员在后台批量添加数据很麻烦,特别是针对一款商品配置了英语,还需要手动添加法语.俄语.阿拉伯语,很麻烦,但是因为没有项目组配合,做个小工具批量生成数据就只有自己去研究了 第一步:通过抓包工具 ...
随机推荐
- JAVA - 大数类详解
写在前面 对于ACMer来说,java语言最大的优势就是BigInteger,Bigdecimal,String三个类. 这三个类分别是高精度整数,高精度浮点数和字符串,之所以说这个是它的优势是因为j ...
- P6 EPPM R16.1安装与配置指南(三)
P6 EPPM R16.1安装与配置指南(三) 解压:V137390-01.zip 修改 D:\P6_R161\p6suite\database\dbsetup.bat 的行 SET JAR_FI ...
- .net中WebService的使用实例
一.创建一个Webwebservice 1.新建一个项目WebserverDemo 2.在项目处添加新建项,添加一个web服务 3.编辑TestServer.asmx文件 3.1 TestServer ...
- webservice 原理
webservice 原理1.soap协议,其实就是用http协议来传输xml格式的数据,可以post,get.一般有post.2.服务端有:本地程序代码(也不是dll)和xml格式的文件用来描述dl ...
- JPA学习(3)JPA API
在我们的jpa的helloworld中,我们看到了简单的一个jpa保存操作,下面就来好好学习一下,JPA最主要的几个类 1.基本的几个类: ①:Persistence 类是用于获取 EntityMan ...
- ex_KMP--Theme Section
题目网址: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110060#problem/B Description It's time f ...
- Linux Shell系列教程之(十七) Shell文件包含
本文是Linux Shell系列教程的第(十七)篇,更多Linux Shell教程请看:Linux Shell系列教程 通过文件包含,可以引用其他文件的内容,也可以将复杂内容分开,使程序结构更加清晰. ...
- 【iOS】Quartz2D练习-动态改变属性值
一.通过slider控制圆的缩放 1.实现过程 新建一个项目,新建一个继承自UIview的类,并和storyboard中自定义的view进行关联.代码示例:SLViewController.m文件 # ...
- swift学习笔记之-下标脚本
//下标脚本subscript import UIKit /*下标脚本(Subscripts) 下标脚本: 1.可以定义在类(Class).结构体(structure)和枚举(enumeration) ...
- 简洁侧边wordpress博客模板
模板描述:商务领航,尽现成熟稳重的个人小站风格 响应式Web设计,自适应电脑.平板电脑.移动设备 图标字体库,自适应各种终端设备,保证图形图标清晰无锯齿,支持Retina(视网膜屏幕) ...