在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();
        }

好了这次就说到这里··如有错误欢迎大家指正~!!!

时间: 2024-11-05 10:01:33

在MVC3中使用code first生成数据局库并操作数据库的相关文章

客户关系管理系统中对客户及相关数据的导入导出操作

在很多系统,我们都知道,Excel数据的导入导出操作是必不可少的一个功能,这种功能能够给使用者和外部进行数据交换,也能批量迅速的录入数据到系统中:但在一些系统中,为了方便,可能把很多个基础表或者相关的数据综合到一个Excel表格文件里面,然后希望通过接口进行导入,这种需求处理就显得比较复杂一点了.本文探讨在我的客户关系管理系统中,对于单个Excel表格中,集合了客户基础数据及相关数据的导入和导出操作的处理. 1.导入导出的需求分析 本随笔主要介绍如何在系统中,导入单一文件中的数据到系统中,这个文

利用Sql实现将指定表数据导入到另一个数据库示例

因为工作中经常需要将数据从一个数据库导入到另一个数据库中,所以将这个功能写成一个存储过程,以方便调用.现在粘贴出来供大家参考: 注意:1,以下示例中用到了syscolumns,sysobjects等系统视图,在sql2005及以后的版本中,大家也可以使用sys.columns与sys.objects来代替,只要修改对应的字段即可.2,以下示例还用到了set identity_insert设置,有对该设置不太清楚的朋友可以点击链接查看其用法.3,结合sys.tables表与游标,大家可以循环调用以

ASP.NET MVC3中Controller与View之间的数据传递总结

</pre>在ASP.NET MVC<span style="font-family:宋体">中,经常会在</span>Controller<span style="font-family:宋体">与</span>View<span style="font-family:宋体">之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨:&

EF 中 Code First 的数据迁移以及创建视图

写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功),我摸索出了一种简单有效的方法,这里分享给大家. EF是Entity Framework(实体框架)的简写,是微软出品的用来操作数据库的一个框架,会ASP.NET MVC的朋友对他肯定都不陌生.由于学艺不精,我对EF存在一疑虑,就不以[提问]的方式来问了,我以[总结]的方式来表达,如果总结有误的地

java 通过接口在后台管理器中生成数据

需求:测试人员在后台批量添加数据很麻烦,特别是针对一款商品配置了英语,还需要手动添加法语.俄语.阿拉伯语,很麻烦,但是因为没有项目组配合,做个小工具批量生成数据就只有自己去研究了 第一步:通过抓包工具fiddler查看接口走向 第二步:模拟url,进行请求 第三步:验证结果 第一步:从接口中我了解到,我们需要获取原始语言的数据,如:标题.名称.文件标题.详细信息,在把数据取出来,取出来后,在调用商品增加的接口,把数据内容填充进去,进行提交,就完了 目前我们排除登录态的问题,默认是可以登录成功的,

ASP.NET MVC3中Controller与View之间的数据传递

在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: [csharp] view plain copy print? ViewData["Message_ViewData"] = " Hello ViewData!"; Vi

hibernate中使用schemaExport生成数据表报错解决方法

[解决方法] 1.hibernate中使用schemaexport生成数据表,很多教材是教你这么写的: SchemaExport schemaExport = new SchemaExport(new Configuration().configure());         schemaExport.create(true, true);   因为我们现在基本都是使用hibernate 5.x,所以当你这么写的时候,IDE会提醒你这种方法已经不推荐使用了. 2.解决方法:将以上代码改成以下代码

hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)

绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xml文件 和 注解方式 来自动生成数据表 其中只是整了spring.hibernate,struts部分没有整.也就是说我只是测试了能够自动生成数据表(自动生成为"标准",自认为是对的......) 下面是配置和代码: 使用工具:myeclipse 2014 ,其中web project项目

SAP IDES中SPFLI表中生成数据

安装好IDES后,发现SPFLI表中竟然没有数据,百度了一下,网友给出一段代码,运行以后,SPFLI中就有数据了,代码如下: *&---------------------------------------------------------------------* *& Report ZLIU_008 *& www.qiqubaike.com *&-------------------------------------------------------------