EF框架step by step(4)—DBcontext应用于已存在数据库
EF4.1有三种方式来进行数据操作及持久化。分别是Database-First,Model-First,Code-first,前面都已经简单介绍过了.下面简单小结一下:
1.Database First是基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件。
2.Model First 这种方式是先利用某些工具(如VS的EF设计器)设计出实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。
3.Code First 这种方式需要先写一些代码,如实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象,这种方式在前一篇文章已经简单说过了。但其实这种方法与Model First是非常类似的。我们自己写的代码,其实就是用代码表示实体模型,而Model First是用可视化的方式描述了实体模型。
code First方法默认情况下是以命名空间.DBcontext类名来作为自动创建的数据库名称,如上一篇中的CodeFirstSample.BlogDbContext.
我们也可以按如下方法指定数据库名称:

public class BlogDbContext : DbContext
{
/// <summary>
/// 新建数据库,并命名为BlogDB,
/// </summary>
public BlogDbContext() : base("BlogDB") { } public IDbSet<BlogUser> BlogUsers { get; set; }
public IDbSet<Post> Posts { get; set; } }

code First这种方式也可以用于已存在的数据库,具体作法如下:
第一步:在app.config或者web.config中配置数据库连接字符串

<configuration>
<connectionStrings>
<add name="BlogDB" providerName="System.Data.SqlClient"
connectionString="Data Source=.\sqlexpress;Initial Catalog=MyBlogDB;Integrated Security=True"/>
</connectionStrings>
</configuration>

第二步:是让DBcontext获取已存在数据库,在构造DBcontext时,指定使用这个连接字符串

public class BlogDbContext : DbContext
{ /// <summary>
/// 会在app.config或者web.config文件中查找BlogDB节,做为连接字符串
/// 但数据库中必须已存在表,即不会重新创建表,这种方法类似DataBase First
/// </summary>
public BlogDbContext()
: base("name=BlogDB")
{ }
public IDbSet<BlogUser> BlogUsers { get; set; }
public IDbSet<Post> Posts { get; set; } }

第三步:添加要匹配的类以及匹配关系。

public partial class BlogUser
{ public int BlogUserId { get; set; }
public string BlogName { get; set; }
public virtual ICollection<Post> Posts { get; set; }
} public partial class Post
{ public int PostId { get; set; }
public string PostTitle { get; set; }
public int BlogUserId { get; set; }
public virtual BlogUser BlogUser { get; set; }
}

第四步:获取数据

using (BlogDbContext db = new BlogDbContext())
{ //通过主键查找用户
BlogUser blogUser = db.BlogUsers.Find(4);
Console.WriteLine(blogUser.BlogName);
foreach (var item in blogUser.Posts)
{
Console.WriteLine("\t{0}",item.PostTitle);
}
}

这种方式其实是Database First,只是用我们自己写的类替换了由可视化工具生成类及xml文件。
EF框架step by step(4)—DBcontext应用于已存在数据库的更多相关文章
- DBcontext应用于已存在数据库
转自:http://www.cnblogs.com/Tally/archive/2013/01/30/2882855.html EF4.1有三种方式来进行数据操作及持久化.分别是Database-Fi ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 前言:这 ...
- EF框架step by step(7)—Code First DataAnnotations(2)
上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体 ...
- EF框架step by step(6)—处理实体complex属性
上一篇的中介绍过了对于EF4.1框架中,实体的简单属性的处理 这一篇介绍一下Code First方法中,实体Complex属性的处理.Complex属性是将一个对象做为另一个对象的属性.映射到数据库中 ...
- EF框架step by step(7)—Code First DataAnnotations(1)
Data annotation特性是在.NET 3.5中引进的,给ASP.NET web应用中的类提供了一种添加验证的方式.Code First允许你使用代码来建立实体框架模型,同时允许用Data a ...
- EF框架step by step(8)—Code First DataAnnotations(2)
上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体 ...
- EF框架step by step(5)—处理实体简单属性
EF框架会对实体进行跟踪,对实体的每个属性当前值和原始值及其状态进行跟踪,记录.当前值是指实体属性当前的被赋予的值,而原始值是指实体最初从数据库读取或者附加到DbContext时的值. 先通过简单的代 ...
- EF框架step by step(3)—Code-First
CodeFirst是EF框架的第三种方式,也是最为复杂一种方式,本文将以EF4.1版本为基础,简要讲解一下用法,同时,也介绍DbContext的用法. 本文采用的示例仍然是前两篇采用的博客用户的示例. ...
- EF框架step by step(2)—Model-First
这一篇主要说一下EF框架中,Model First做法,仍然采用上一篇的案例.但增加评论功能.首先打开Blog.edmx文件,在空白处右键,添加新实体Comment,如下图示: 点击确定,关闭窗口. ...
随机推荐
- 不同版本CUDA编程的问题
1 无法装上CUDA的toolkit 卸载所有的NVIDIA相关的app,包括NVIDIA的显卡驱动,然后重装. 2之前的文件打不开,one or more projects in the solut ...
- ios Push证书 转换步骤
1.将aps_developer_identity.cer转换成aps_developer_identity.pem格式openssl x509 -in aps_developer_identity. ...
- 二、JavaScript语言--JS实践--信息滚动效果制作
运用JavaScript技术,掌握无缝滚动和歇间性滚动的制作方法. 一.marquee标签实现信息滚动 1 behavior滚动的方式 alternate:表示在两端之间来回滚动 scroll:表示由 ...
- JAVA作业02
一, 课堂练习 (一)构造方法 1,源代码 public class Test{ public static void main(String[] args){ Foo obj1=new F ...
- 从数据库导出数为生成excel表
mysql -umaster -hxx.xx.xx.xx -p -e "set names utf8; use xxxdb;select * from t_order where t_ord ...
- MVC - 11(下)jquery.tmpl.js +ajax分页
继续 mvc-11(上).dto:http://www.cnblogs.com/tangge/p/3840060.html jquery.tmpl.js 下载:http://pan.baidu.com ...
- AIX性能监控
http://www.ibm.com/developerworks/cn/aix/library/au-aix7memoryoptimize2/ http://www.aixchina.net/Art ...
- MyBatis 特殊字符处理
http://blog.csdn.net/zheng0518/article/details/10449549
- Netty网络编程之NIO概览与简单应用
>>关于NIO Java NIO即Java Non-blocking IO(Java非阻塞I/O),是Jdk1.4之后增加的一套操作I/O工具包,又被叫做Java New IO. (1)R ...
- Delphi开发中各种文件扩展名代表什么文件
暂时就遇到了以下这几种,以后遇到再进行补充 .DPR Delphi Project文件,打开这个文件,就会打开所有的编程的代码文件.包含了Pascal代码 .PAS Pascal文件,Pascal单元 ...