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=,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.

CodeFirst体验之且行且珍惜的更多相关文章

  1. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  2. EF Code First 初体验

    Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项目:Model.DataAccess和一 ...

  3. FE—— Code First 初体验 01(转)

    EF Code First 初体验   Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项 ...

  4. 文档数据库RavenDB-介绍与初体验

    文档数据库RavenDB-介绍与初体验 阅读目录 1.RavenDB概述与特性 2.RavenDB安装 3.C#开发初体验 4.RavenDB资源 不知不觉,“.NET平台开源项目速览“系列文章已经1 ...

  5. CSharpEntityFramework与CodeFirst实践

    CSharpEntityFramework与CodeFirst实践 前言 当我们进行开发的时候,常常会用到数据库来对数据进行持久化的操作,有的时候,我们并不想要在进行代码开发的过程中,还去关注数据库的 ...

  6. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

  7. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  8. TODO:小程序开发过程之体验者

    TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...

  9. 微信小程序体验(2):驴妈妈景区门票即买即游

    驴妈妈因为出色的运营能力,被腾讯选为首批小程序内测单位.驴妈妈的技术开发团队在很短的时间内完成了开发任务,并积极参与到张小龙团队的内测问题反馈.驴妈妈认为,移动互联网时代,微信是巨大的流量入口,也是旅 ...

随机推荐

  1. 网页图表Highcharts实践教程标之添加题副标题版权信息

    网页图表Highcharts实践教程标之添加题副标题版权信息 Highcharts辅助元素 辅助元素图表的非必要元素,如标题.版权信息.标签.载入动态.它们不和图表数据发生关联,只是额外说明一些基本信 ...

  2. 每日踩坑 2018-12-25 【Unable to convert MySQL date/time value to System.DateTime】异常

    之前的公司一直是用 ORM ,所以底层的事情完全不用在意, 到了这家全是似乎全是 SQL 硬编码 所以也有机会重新去补补以前也没怎么写过的基本 ADO. 不过这两天总有自己写个简易ORM的想法在蠢蠢欲 ...

  3. Java 操纵XML之修改XML文件

    Java 操纵XML之修改XML文件 一.JAVA DOM PARSER DOM interfaces The DOM defines several Java interfaces. Here ar ...

  4. Linux与Windows远程互访(使用Rdesktop与SSH)

    工作的时候经常使用Redhat系列系统,而平常娱乐文档都是在windows平台上进行.因此实现linux与windows远程互访也是很有必要的事情. 本文将介绍如何实现Linux与Windows的远程 ...

  5. 某题目2 状压DP

    Description 对于一个数列,其混乱度定义为连续相等的数的段数.如:1 2 1 2 1,其混乱度为5,而:1 2 2 3 3,其混乱度为3.现给出一个数列,允许取出k个数并允许插入数列中的任意 ...

  6. 堆排序的C++代码实现

    堆排序C++实现 堆排序的具体思路可以查看<算法导论>这本书,一下只提供笔者的C++实现代码,并且将笔者在编写程序的过程当中所遇到的一些细节问题拿出来作一番解释,希望能够对对堆排序有一个透 ...

  7. centos上安装elasticsearch 5.5.1 遇到的各种坑

    mac玩得好好滴,一次性启动成功,结果在centos上安装时,遇坑无数,记录一下: 一.只能localhost访问的问题修改 conf\elasticsearch.yml network.host: ...

  8. ARM LDR/STR, LDM/STM 指令

    这里比较下容易混淆的四条指令,已经在这4条指令的混淆上花费了很多精力,现在做个小结,LDR,STR,LDM,STM这四条指令, 关于LDM和STM的说明,见另外一个说明文件,说明了这两个文件用于栈操作 ...

  9. Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) TimeZone

    本章介绍TimeZone. TimeZone 简介 TimeZone 表示时区偏移量,也可以计算夏令时.在操作 Date, Calendar等表示日期/时间的对象时,经常会用到TimeZone:因为不 ...

  10. win10如何彻底删除Gis|彻底卸载ArcGis的方法说明

    ArcGIS产品线为用户提供一个可伸缩的,全面的GIS平台.ArcObjects包含了许多的可编程组件,从细粒度的对象(例如单个的几何对象)到粗粒度的对象(例如与现有ArcMap文档交互的地图对象)涉 ...