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);        }    }

时间: 2024-08-27 21:12:54

EF框架step by step(2)—Model-First的相关文章

EF框架step by step(8)—Code First DataAnnotations(2)

上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体之间的关系. ForeignKey Code first默认情况下会自动建立实体之间的关系,比如在EF框架step by step(3)—Code-First这篇随笔中所介绍那样. public partial class BlogUser{ public int BlogUserId { get;

EF框架step by step(7)—Code First DataAnnotations(1)

Data annotation特性是在.NET 3.5中引进的,给ASP.NET web应用中的类提供了一种添加验证的方式.Code First允许你使用代码来建立实体框架模型,同时允许用Data annotation特性来配置类和属性的某些特性. 其实在前面的几篇文章中,有用到几个,在这一篇里,进行一次比较全面的介绍 Key EF框架要求每个实体必须有主键字段,他需要根据这个主键字段跟踪实体.CodeFirst方法在创建实体时,也必须指定主键字段,默认情况下属性被命名为ID.id或者[Clas

EF框架step by step(7)—Code First DataAnnotations(2)

上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体之间的关系. ForeignKey Code first默认情况下会自动建立实体之间的关系,比如在EF框架step by step(3)—Code-First这篇随笔中所介绍那样. public partial class BlogUser{ public int BlogUserId { get;

EF框架step by step(6)—处理实体complex属性

上一篇的中介绍过了对于EF4.1框架中,实体的简单属性的处理 这一篇介绍一下Code First方法中,实体Complex属性的处理.Complex属性是将一个对象做为另一个对象的属性.映射到数据库中则子对象表现为多个属性字段. 反之,也就是说,数据库中多个相关字段映射成一个子对象,来进行统一的管理. complex属性要注意不同于外键引用对象的. 下面用Code First的方式先做个complex属性. public class Book { public int BookId { get;

WPF MVVM 架构 Step By Step(6)(把actions从view model解耦)

到现在为止,我们创建了一个简单的MVVM的例子,包含了实现了的属性和命令.我们现在有这样一个包含了例如textbox类似的输入元素的视图,textbox用绑定来和view model联系,像点击button这样的行为用命令来联系.view model和model在内部通信. 但是在上面的架构中有一个问题,command类和view model有很严重的耦合.如果你记得command类的代码(在下面也有展示),在构造函数中传递view model对象,意味着这个command 类不能再其他的vie

WPF Step By Step 系列-Prism框架在项目中使用

WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Prism框架来构建基础的应用框架,并且如何来设计项目的架构和模块,下面我们就来一步步开始吧. 本文大纲 1.Prism框架下载和说明 2.Prism项目预览及简单介绍. 3.Prism框架如何在项目中使用. Prism框架下载和说明 Prism框架是针对WPF和Silverlight的MVVM框架,这

解决MVC中Model上的特性在EF框架刷新时清空的问题

MVC中关于前端数据的效验一般都是通过在Model中相关的类上打上特性来实现. 但是在我们数据库发生改变,EF框架需要刷新时会把我们在Model上的特性全部清除,这样的话,我们前端的验证就会失效. 因此,我觉得可以使用Partial-局部类(伙伴类) 的方式来实现EF框架刷新特性不清除的功能. 在Model文件夹当中我们先建立一个类,一般命名为“你的类名”+Partial,因为如果直接建立同名类会提示已存在,要求覆盖,或者在别的地方建同名类.(需要在class前面加上Partial 关键字) 然

【Step By Step】将Dotnet Core部署到Docker下

一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core—使用.Net Core + Entity FrameWork Core构建WebAPI(一)>一致. 但是在我们这里,由于docker中无法部署sql server,所以我采用了Mysql数据库,顺便吐槽一下 SQL Server真的太贵了,阿里云的Mysql实例价格和SQL Server实例价格差10倍,真的好夸张. Mysql官方的EF Core支持刚刚出

ASP.NET MVC+EF框架+EasyUI实现权限管理系列

http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也要感谢大家了,因这个 项目我已经上传了,得到了很多网友的评价,也有好多人发邮件给我说这个框架容易出现问题,不能访问,这也是支持我写这个系列的动力,我将这个项目写成一个 系列