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.

转载于:https://www.cnblogs.com/xiaofeixiang/p/3614999.html

CodeFirst体验之且行且珍惜相关推荐

  1. EFCore+MSSS CodeFirst多对多设计初体验

    近期VS2017发布,EFCore更新到1.1,看了网上一篇博客:ASP.NET EntityFrameworkCore code first 多对多设计 便想自己体验一番. 场景:使用ASP.NET ...

  2. 一篇网易获奖的产品分析来敲门:『有道云笔记』产品体验报告

    提醒:文章前面是一些个人絮叨,想直接看内容的跳过就好. 一.为什么有这篇报告 这篇报告我今年9月份参加某厂的"产品体验官"大赛的参赛作品,360余名参赛者中,获得12名," ...

  3. 在DJI大疆做算法的日常工作与体验~

    大家好,我是对白. 今天给大家分享一位朋友在大疆做算法工程师的日常,工作内容还是比较有趣的,也给我们科普了大疆的一些福利,以下为原文. 作者:全之 | 编辑:对白的算法屋 https://zhuanl ...

  4. 用户体验要素:以用户为中心的产品设计

    用户体验设计的价值和影响力 1.前言 在产品开发过程中,人们更多关注产品将来做什么.用户体验是经常被忽略的另一个因素,即产品如何工作,而这一因素恰恰是决定产品成败的关键因素.在阅读完<用户体验要 ...

  5. 《悠悠岁月》悠悠岁月,浅藏浅忆,且行且珍惜

    <悠悠岁月>悠悠岁月,浅藏浅忆,且行且珍惜 安妮·埃尔诺,法国当代著名女作家,2022年获诺贝尔文学奖.埃尔诺从1974年开始创作,至今已出版了约十五部作品.<悠悠岁月>这部历 ...

  6. 博士第六年还没有发 Paper 是一种什么样的体验?| 文末送书

    链接:https://www.zhihu.com/question/59323074 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 今天选择的话题,一看就透露着无比心酸,无奈生活就是这么不可控 ...

  7. 【愚公系列】华为云云数据库MySQL的体验流程|【华为云至简致远】

    文章目录 前言 一.MySQL数据库相关概念 1.什么是MySQL 2.什么是华为云云数据库MySQL 二.华为云云数据库MySQL的体验流程 1.购买云数据库MySQL 2.进入数据库费用中心 3. ...

  8. 也谈用户体验这件小事

    对于我这种非产品经理出身的普通人,谈"用户体验"是不是有点不自量力? 用户体验是"小事"吗?普通人懂吗?可能在产品经理的眼中,用户体验不是一般人都能懂的.可是产 ...

  9. BERT可视化工具bertviz体验

    BERT可视化工具体验:bertviz是用于BERT模型注意力层的可视化页面. 1,bertviz的github地址:https://github.com/jessevig/bertviz 2,将be ...

最新文章

  1. ImportError: cannot import name 'AccessCalendar'
  2. 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)
  3. Salted Password Hashing
  4. 使用 Async 和 Await 的异步编程
  5. micropython是啥 知乎_嵌入式开发必备调试工具:Micro-Lab
  6. LC-BLSTM结构快速解读
  7. ios cannot use “@throw“ with objective-c exceptions disabled 问题解决方案
  8. CentOS部署OpenStack过程-网络服务
  9. 【阅读笔记】《创京东:刘强东亲述创业之路》
  10. NEFU计算机组成原理课程设计之乘法器
  11. html表单 当前年月日_HTML5表单
  12. Java实现泛型解析工具类-GenericsUtils
  13. C++之单例(singleton)模式
  14. systemverilog之覆盖率
  15. Linux系统基础学习--ubuntu
  16. css icon旋转
  17. nvidia驱动卸载与安装
  18. 谷歌浏览器打开显示2345浏览器界面
  19. 盘点8款流行的网红纱帘,以及它们的特点 - 江南爱窗帘十大品牌
  20. 路由器与三层交换机的区别

热门文章

  1. jquery.desktop.js 代码分析
  2. Bash命令行历史用法【转】
  3. Ubuntu下安装Docker
  4. 云舒网络译:Rancher1.0正式版公布
  5. “开始菜单”按钮今年8月将重回Windows 8
  6. 在word中的公式以代码形式体现在web上的方法
  7. Delphi中静态方法重载还是覆盖的讨论
  8. python 预编译命令_Python子进程调用预编译j
  9. html空格代码_编写灵活、稳定、高质量的CSS代码的规范(推荐收藏)
  10. 读取文本节点_总结语录|Part1:Dynamo节点介绍