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. CentOS7下安装MySQL5.7安装与配置(YUM)

    http://blog.csdn.net/xyang81/article/details/51759200 安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在My ...

  2. hdu 5831 Rikka with Parenthesis II 线段树

    Rikka with Parenthesis II 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5831 Description As we kno ...

  3. Linux学习笔记07—mysql的配置

    一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱 ...

  4. RX库中的IDisposable对象

    IDisposable是.net中的主动资源释放接口,它是在编程过程中经常使用到的一个接口,本文介绍一下微软在Rx.NET中提供的一系列常用的Disposable类,通过它们可以简化我们的程序代码,提 ...

  5. OpenOCD 0.9.0 release

    OpenOCD 0.9.0 release May 18th, 2015 I’m happy to announce the release of OpenOCD version 0.9.0, fin ...

  6. DMA Stream/Channel Outputting via GPIOC[0..7]

    Ok, so quickly mashing up another example using a different TIM, DMA Stream/Channel for illustration ...

  7. C#实现的三种方式实现模拟键盘按键

    1.System.Windows.Forms.SendKeys 组合键:Ctrl = ^ .Shift = + .Alt = % 模拟按键:A private void button1_Click(o ...

  8. Mui --- app与服务器之间的交互原理、mui ajax使用

    1.APP与服务器之间的交互原理 app端(客户端)与服务端的交互其实理解起来和容易,客户端想服务器端发送请求,服务器端进行数据运算后返回最终结果.结果可以是多种格式: 1.text 文本格式 2.x ...

  9. 看opengl 写代码(4) 画一个圆

    opengl 编程指南 P30 以下代码 是 用 直线 连起来 画一个圆. // circle.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" ...

  10. ios之快速枚举

    for(UIView * subView in self.view.subviews) { if([subView isKindOfClass:[XYZSeniorQueryView class]]) ...