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. android touch事件分发流程

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 三个方法:分发触摸事件dispatchTouchEvent.在触摸事件的时候onTouc ...

  2. 使用Xcode打包上传APP

    1.打开xcode,进入product->Scheme->EditScheme,找到Archive,最上面的设备选择IOSDevice,在BuildConfiguration中选中Rele ...

  3. setInterval 和 setTimeout

    setInterval 和 settimeout的区别 setinterval 1.会造成某些间隔会被跳过2.多个定时器之间的执行代码事假间隔比预期的小 而且 当定时器代码添加到任务队列里面没有被执行 ...

  4. linux脚本启动停止一个jar

    ###########################启动########################### #!/bin/sh ####定义一个函数在当前文件夹下读取所有jar文件 functi ...

  5. STM32F4 External event -- WFE 待机模式

    The STM32F4xx are able to handle external or internal events in order to wake up the core (WFE). The ...

  6. epoll的LT和ET使用EPOLLONESHOT

    epoll有两种触发的方式即LT(水平触发)和ET(边缘触发)两种,在前者,只要存在着事件就会不断的触发,直到处理完成,而后者只触发一次相同事件或者说只在从非触发到触发两个状态转换的时候儿才触发. 这 ...

  7. MyEclipse使用总结——设置MyEclipse使用的Tomcat服务器

    一.设置使用的Tomcat服务器 如果不想使用MyEclipse自带的tomcat服务器版本,那么可以在MyEclipse中设置我们自己安装好的tomcat服务器 设置步骤如下: Window→Pre ...

  8. fdLocalSql使用方法

    fdLocalSql使用方法 fdLocalSql可以对fdMemTable内存表进行SQL查询(可以对多个fdMemTable内存表进行联表查询哦),fdLocalSql使用SQLITE引擎,而FI ...

  9. Chrome 如何知道网站启用了SPDY 协议?

    地址栏输入chrome://net-internals/#spdy 在host后查看协议,google和dropbox用https协议的开启了 3. 也可以通过安装插件来查看(SPDY Indicat ...

  10. C#编程(三十六)----------元组

    元组 数组合并了相同类型的对象,而元组合并了不同类型的对象. .NET 4定义了8个泛型Tuple类和一个静态的Tuple类,他们用作元组的工厂. 元组是一种数据结构,通过逗号分隔 Tuple< ...