CodeFirst体验之且行且珍惜

简介:

CodeFirst作为一种新的开发理念和方式,EF  Code-First相对于MVC中的DataFirst,ModelFirst确实开发效率确实高点,至少数据库建表这一块,直接用类映射到数据中,标记在前面都是看的愉悦和方便,理论知识不是很擅长,还是写写实践吧,个人的学习的一点分享~

简单点建立就是学生和学校,一对一的对应关系

1.建立Model和继承自DbContext的类MyContext

复制代码
public class MyContext:DbContext
    {
        public MyContext()
            : base("name=MyCodeFirst")
        { }
        public DbSet<Student> Students { get; set; }
        public DbSet<School> Schools { get; set; }
    }
    public class Student
    {
        public int Id { get; set; }
        public string StuName { get; set; }
        public int Age { get; set; }
        public School School { get; set; }
    }
    public class School
    {
        public int Id { get; set; }
        public string SchoolName { get; set; }
        public string Address { get; set; }
    }
复制代码

 

2.在APP.Config配置文件中配置数据库连接字符串,默认的连接的是localDB数据中,不是很习惯使用~

 

第一个对应的MyContext中的name的名字,第二个是要生成的数据库的名字,访问数据的驱动名称.

3.关键一步----写程序,其实就三句话~

 

复制代码
 static void Main(string[] args)
        {
            MyContext dbConext = new MyContext();
            var  student=new Student(){StuName="keso",Age=24,School=new School(){SchoolName="农大",
                Address="江西"}};
            dbConext.Students.Add(student);
            dbConext.SaveChanges();
            Console.WriteLine("CodeFirst体验成功~");
            Console.ReadLine();
        }
复制代码

4.最终的结果:

5.以上一步步的进行下去应该是没有问题的,如果Model中Student加一个属性Height会怎么样呢?

这个时候我们应该做的事情就是数据迁移了,听上去感觉很吊的样子,英文是Migrations,其实操作起来就是几行命令~

在VS2012工具→库程序包管理器→程序包管理器控制台

输入三个命令:

1)Enable-Migrations  按下enter键之后就会扫描数据中所有的上下文,可以选中其中的一个就行迁移,我写的Demo就一个上下文,使用这个命令没问题

如果有多个的话可以 使用  Enable-Migrations -ContentType

                                 namespace...上下文名称

2)第一步做完之后只需要会生成一个文件夹,有两个文件,一个是根据时间命名继承自DbMigration的初始文件,第二个就是Configuration配置文件,需要执行一个命令

   Add-Migration(注意这个没有s) AddHeight(这个可以自己命名) 

3)最后执行的一个命令  Update-Database

执行完之后就可以随便更改模型映射到数据库中.看下结果吧:

关于CodeFirst这个来说,有些用的CTP5这个框架,参考过的文章,不过发现一个很多,很多博客园上的CodeFirst的文章就是原版的Msdn的介绍内容,感觉有点失望.

http://msdn.microsoft.com/zh-cn/gg981915

http://www.cnblogs.com/zhanghonjiang2011/archive/2012/04/26/2471528.html

http://blogs.msdn.com/b/jason_zander/archive/2012/07/30/entity-framework-code-first-asp-net-web-api.aspx

http://msdn.microsoft.com/zh-CN/data/jj193542

都这么晚了,妹子都睡了,我脸还没洗,随机分享一个其他的CodeFirst的内容DevExpress中使用CodeFirst的方式,以前的笔记:

class  Program
    {
         static  void  Main(  string [] args)
        {
             Session .DefaultSession.ConnectionString =  "Data Source=.;Initial Catalog=XPOTest;Integrated Security=true" ;
             // 一对多的保存关系
             User  user =  new  User ();
            user.FirstName =  " 思思 "  ;
            user.LastName =  " "  ;
 
             Address  a1 =  new  Address ();
            a1.Local =  " 广西省 "  ;
 
             Address  a2 =  new  Address ();
            a2.Local =  " 桂林市 "  ;
 
            user.Addresses.Add(a1);
            user.Addresses.Add(a2);
            user.Save();
             Console .WriteLine(  " 有些东西结束就就真的结束啦  , 是不可以挽回的  " );
             Console .ReadKey();
        }
    }
     class  User  :  XPObject
    {
         public  string  FirstName;
         public  string  LastName;
        [  Association ( "User-Address"  , typeof  ( Address  )), Aggregated  ]
         public  XPCollection  Addresses
        {
             get
            {
                 return  GetCollection(  "Addresses" );
            }
        }
    }
     class  Address  :  XPObject
    {
        public  string  Local;
       [  Association ( "User-Address"  )]
        public  User  User;
    }

最终生成的结果图如下所示,添加之后自动保存了Address的数据:

这个属于随机附赠的,需要安装一下DevExpress的程序,然后在项目中就可以饮用Dev的程序集,就可以继承XPOObject,类似于微软现在的DbContext.
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/3614999.html,如需转载请自行联系原作者
相关文章
|
3月前
|
前端开发 JavaScript 搜索推荐
专业与传统相融,程序员特有祝福:通过前端代码送上新春祝福
新春佳节即将来临,忙了一年,作为程序员,当然要用属于程序员独有的方式来给大家送上新春祝福。在这个喜庆的时刻,让我们以技术的视角来送上一份特别的新春祝福,作为程序员,我们可以用代码和技术,为了大家带来一份独特而有趣的祝福,为了给节日增添一份属于技术人特有的魅力,以前端开发的视角来送上一份特别的新春祝福。作为前端开发者,通过编写前端代码可以创造出丰富多样的视觉效果,可以利用HTML、CSS和JavaScript等编写代码来呈现出直观的新春祝福效果,为大家呈现出生动直观的新春祝福。那么本文以前端程序员的视角,结合前端专业知识送上新春祝福,希望在新的一年里,大家的生活充满幸福和技术的收获。
40 1
专业与传统相融,程序员特有祝福:通过前端代码送上新春祝福
|
3月前
|
机器人 程序员 C++
Scratch3.0——助力新进程序员理解程序(案例一、画画的蝴蝶)
Scratch3.0——助力新进程序员理解程序(案例一、画画的蝴蝶)
28 0
|
12月前
|
SQL XML 存储
MyBatis这样用,同事直呼哇塞,堪称最佳实践
MyBatis是一款非常流行的ORM框架,相信很多小伙伴都在使用。我们经常会把它和MyBatis-Plus或者MBG一起使用,用多了之后对于其一些常规操作就不太熟悉了。最近总结了下MyBatis的实用用法和技巧,希望对大家有所帮助!
|
存储 测试技术 Go
10秒改struct性能直接提升15%,产品姐姐都夸我好棒
如果您以前写过 Golang ,那您很可能见过或者写过 Struct 结构体。但是,您可能不知道,通过简单地重新排序结构体中的字段,您可以极大地提高 Go 程序的速度和内存使用率!
91 0
相亲交友源码,从不断实践中总结出的开发技巧
相亲交友源码,从不断实践中总结出的开发技巧
|
搜索推荐
小说源码的“上瘾”设计,不知不觉沉浸其中
小说源码的“上瘾”设计,不知不觉沉浸其中
|
移动开发 前端开发 JavaScript
【新人福利】前端学习路线,再也不用发愁自己该从何学习
【新人福利】前端学习路线,再也不用发愁自己该从何学习
218 0
【新人福利】前端学习路线,再也不用发愁自己该从何学习
|
算法 架构师 Android开发
iOS开发者如何做到升职加薪到25k?6年开发 架构师笔记送给你!
对于我们绝大多数人来说,工作最基本的意义是我们可以通过自己的劳动换取酬劳来养活自己,尤其是对于刚毕业的学生,拥有一份全日制的工作意味着自己走出校园,踏上社会,自己真正开始独立起来。
iOS开发者如何做到升职加薪到25k?6年开发 架构师笔记送给你!
|
开发框架 架构师 程序员
还在“替人打工”?来试试做自己的产品吧! | 开发者必读(014期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
868 0
|
C++
c++基础(上) 听课流水账
1、pass by value /   pass  by  pointer  /   pass  by  reference   pass by value:实参和形参不是同一个值,因此交换的是形参的值,当函数swap结束后,a和b的值并没有发生交换 pass  by pointer  and  pass by reference :实参和形参是相同的。
1243 0