在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 通过接口在后台管理器中生成数据
需求:测试人员在后台批量添加数据很麻烦,特别是针对一款商品配置了英语,还需要手动添加法语.俄语.阿拉伯语,很麻烦,但是因为没有项目组配合,做个小工具批量生成数据就只有自己去研究了 第一步:通过抓包工具 ...
随机推荐
- jsckson,想说爱你不容易啊。。。406错误
最近使用spring4.0的Mvc,json请求时,客户端报错,406 Not Acceptable 解决方法一: 1.导入第三方的jackson包,jackson-mapper-asl-1.9.7. ...
- 有关C#标签Attribute的熟悉
Attribute 简单用法: 最近用到了,所以静下心来找些资料看了一下,终于把这东西搞清楚了. 一.什么是Attribute 先看下面的三段代码: 1.自定义Attribute类:VersionAt ...
- [译]PrestaShop开发者指南 第一篇 基础
# 第一篇 基础 PS(PrestaShop简称)一开始就设定了能够在它的基础上很简单的构建第三方模块的机制,让它成为一款具有极高定制性的电子商务软件. PS的可以在三个方面进行定制: * 主题 * ...
- urllib库初体验以及中文编码问题的探讨
提出问题:如何简单抓取一个网页的源码 解决方法:利用urllib库,抓取一个网页的源代码 ------------------------------------------------------- ...
- IntelliJ和tomcat中的目录结构
IntelliJ和tomcat中的目录结构 IntelliJ的官网帮助中心:http://www.jetbrains.com/idea/webhelp/getting-help.html pr ...
- PHP学习笔记:伪静态规则的书写
这里以阿帕奇为服务器软件,直接上案例: 1.把index.html重定向到index.php RewriteEngine On Options -Indexes ReWriteRule ^index. ...
- eclipse easyexplorer openexplorer
电脑重装了.. eclipse换成了4.4.2,发现原来的easyexplorer不生效了(原来是4.2),搜了下,换成了open explorer即可. 方式一样,都是丢到eclipse/plugi ...
- MessageBox的Buttons和三级联动
一.MessageBox的Buttons MessageBox.Show可以出现有按钮的对话框 例如: DialogResult dr = MessageBox.Show("是否要继续吗?& ...
- gulp入坑系列(1)——安装gulp
前言 好吧,我承认我是为了搞定Sass编译CSS文件的问题,迷一样的着手入gulp的坑,sass和gulp的爬坑历程大概会一起更新.然后感觉这里windows和mac的流程差不多,不过mac的通常 ...
- CSS3属性(二)
<html> <head> <title>css2</title> <style type="text/css"> di ...