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. codevs 水过 骑马修栅栏

    [问题描述] 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个一个栅栏.你必须编一个程序,读入栅 ...

  2. BZOJ.4180.字符串计数(后缀自动机 二分 矩阵快速幂/倍增Floyd)

    题目链接 先考虑 假设S确定,使构造S操作次数最小的方案应是:对T建SAM,S在SAM上匹配,如果有S的转移就转移,否则操作数++,回到根节点继续匹配S.即每次操作一定是一次极大匹配. 简单证明:假设 ...

  3. [转]eclipse转idea, 快捷键设置

    原文地址: eclipse转idea, 快捷键设置   设置快捷键的途径: 打开idea的配置,找到Keymap,设置为eclipse 另外还要手动设置某些快捷键 上下移动 点击类打开 代码提示 查询 ...

  4. 【BZOJ-2595】游览计划 斯坦纳树

    2595: [Wc2008]游览计划 Time Limit: 10 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 1518  Solved: 7 ...

  5. JDK版本的特性

    1. 2.JDK1.5增加的是: (1) 泛型与枚举类型(枚举类型是静态,常量.里面也可以包含构造方法,成员方法,但是构造方法一定是私有的. 适合枚举的是 有限数据,封装特定的数据,), (2)注解( ...

  6. android tesseract-ocr实例教程(包含中文识别)(附源码)

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍     快过年了,博主的新应用-屏幕取词之了老花镜的编码工作也在紧锣密鼓的进行中.下面分享一下这个应用 ...

  7. Android 解压zip文件

    过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...

  8. LINUX 内核守护进程

    http://alfred-sun.github.io/blog/2015/06/18/daemon-implementation/

  9. PrefixSpan

    http://www.codesoso.net/Search?q=prefixspan

  10. 使用Application.GetResourceStream方法加载资源时得到的总是null

    我们可以预先把程序中用到的资源,如图片,音乐等放入项目中,打包进XAP文档,需要的时候从中调用.下面就说说具体实现方法. 第一步,把数据存进项目. 1.右键点击项目名称-添加-新建文件夹(英文版请自行 ...