EF框架step by step(2)—Model-First
这一篇主要说一下EF框架中,Model First做法,仍然采用上一篇的案例。但增加评论功能。首先打开Blog.edmx文件,在空白处右键,添加新实体Comment,如下图示:

点击确定,关闭窗口。
第二步:在Comment实体上右键,选择Add—Scalar Property,为这个类添加CommentContent(string类型)属性和PostId(Int32)属性.
第三步:在左侧工具箱窗口,选择Association,为Post与Comment两个实体添加关联。具体如下图示:

点击确定,关闭窗口。最后完成后Blog.edmx如下图示:

第四步:在Blog.edmx空白处右键,选择Generate Database from Model... ,生成更新数据库的Sql语句,默认的文件名是Blog.edmx.sql。当然,这个文件里包含了原有的一些表的结构生成代码,各位可以选择,数据库中目前不存在的Comment表及相关约束等语句来执行。执行完成后,打开服务浏览器窗口,刷新,即可看到新增加的表comment,然后为表添加一些测试数据,注意外键的关联。
最后一步:当然就是写些代码,测试一下,具体如下:

class Program
{
static void Main(string[] args)
{
IList<BlogUser> blogUsers = TestEF.GetAllBlogUsers(); ///遍历所有查询结果
foreach (var blogUser in blogUsers)
{
Console.WriteLine(blogUser); ///获取外键对象的内容
foreach (var post in blogUser.Posts)
{
Console.WriteLine("\t 随笔标题:{0}", post.PostTitle); foreach (var comment in post.Comments)
{
Console.WriteLine("\t\t{0}", comment.CommentContent);
}
}
} }
} public static class TestEF
{
public static IList<BlogUser> GetAllBlogUsers()
{ ///BlogDBEntities是继承于ObjectContext类,自动生成
///可以打开Blog.Desgner.cs文件找到
///原型: public partial class BlogDBEntities : ObjectContext
///可以理解为 他代表了当前数据库环境对象
///同时,在Blog.Desgner.cs里还可以找到两个实体BlogUser及Post
using (BlogDBEntities blogDB = new BlogDBEntities())
{ ///采用Linq语法读取数据
///通过Include方法将子对象Post预先加载
IList<BlogUser> blogUsers = blogDB.BlogUsers.Include("Posts").ToList<BlogUser>(); foreach (var item in blogUsers)
{
foreach (var post in item.Posts)
{
//对于Comments对象,也进行了预加载
if (!post.Comments.IsLoaded)
{
post.Comments.Load();
}
}
}
return blogUsers;
} }
} public partial class BlogUser
{
public override string ToString()
{
return string.Format("编号:{0} 姓名:{1}", this.BlogID, this.BlogName);
}
}

EF框架step by step(2)—Model-First的更多相关文章
- EF框架step by step(7)—Code First DataAnnotations(2)
上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体 ...
- 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(6)—处理实体complex属性
上一篇的中介绍过了对于EF4.1框架中,实体的简单属性的处理 这一篇介绍一下Code First方法中,实体Complex属性的处理.Complex属性是将一个对象做为另一个对象的属性.映射到数据库中 ...
- EF框架step by step(5)—处理实体简单属性
EF框架会对实体进行跟踪,对实体的每个属性当前值和原始值及其状态进行跟踪,记录.当前值是指实体属性当前的被赋予的值,而原始值是指实体最初从数据库读取或者附加到DbContext时的值. 先通过简单的代 ...
- EF框架step by step(3)—Code-First
CodeFirst是EF框架的第三种方式,也是最为复杂一种方式,本文将以EF4.1版本为基础,简要讲解一下用法,同时,也介绍DbContext的用法. 本文采用的示例仍然是前两篇采用的博客用户的示例. ...
- WPF Step By Step 系列-Prism框架在项目中使用
WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Pr ...
- enode框架step by step之消息队列的设计思路
enode框架step by step之消息队列的设计思路 enode框架系列step by step文章系列索引: enode框架step by step之开篇 enode框架step by ste ...
- enode框架step by step之Staged event-driven architecture思想的运用
enode框架step by step之Staged event-driven architecture思想的运用 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件 ...
随机推荐
- maven配置httpclient3.X jar包
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging& ...
- top
. h或者? 显示帮助画面,给出一些简短的命令总结说明. k 终止一个进程.系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号.一般的终止进程可以使用15信号:如果不能正常结束那 ...
- JS获取浏览器高度 并赋值给类
在给网站做轮播焦点图的时候,如果需要全屏的话,可以用下面的jQuery来获取浏览器高度,然后赋值给类. $(window).load(function () { var maxHeight = 0; ...
- iOS 十六进制和字符串转换
NSString *dictString = [dict JSONFragment];//组合成的. dictString==={"content":"Sadgfdfg& ...
- 三、jQuery--jQuery基础--jQuery基础课程--第6章 jQuery 事件与应用
1.页面加载时触发ready()事件 ready()事件类似于onLoad()事件,但前者只要页面的DOM结构加载后便触发,而后者必须在页面全部元素加载成功才触发,ready()可以写多个,按顺序执行 ...
- NotePad ++的妙用:添加代码行数和格式不变复制代码
NotePad ++ 不仅安装包小而且功能强大,可以支持很多语言.这里简单阐述下两个功能: 一.在代码前添加行数: 1.用NotePad ++打开一个文件,一般NotePad ++会自动识别这是什么语 ...
- NMON中的各项参数指标
一.NMON中的各项参数指标: SYS_SUMM:显示当前服务器的总体性能情况 Total System I/OStatistics:Avg tps during an interval:显示采集间隔 ...
- ASP.NET的Cookie和Session
HTTP属于应用层,HTTP协议一共有五大特点:1.支持客户/服务器模式;2.简单快速;3.灵活;4.无连接;5.无状态. 无状态HTTP协议是无状态的协议.一旦数据交换完毕,客户端与服务器端的连接就 ...
- SQL高级查询之一
一,子查询 SELECT e.emp_id, e.fname, e.lname FROM (SELECT emp_id, fname, lname, start_date, title FROM em ...
- 没有VisualStudio也要HelloWorld
前言 在博客园看到Artech的通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1)这篇文章,于是想跟着教程学习一下.说来惭愧,这篇文章发布于2014年12月,我在2016 ...