• 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(" 随笔标题:{0}", post.PostTitle);

    foreach (var comment in post.Comments)
    {
    Console.WriteLine(" {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);
    }
    }
    复制代码

    最后运行效果如下图:

    这一篇,其实是采用了Database First与Model First混合的作法,这时,要注意命名的规范性,否则可能会引发异常,如果在测试过程中,发现异常,请查看Blog.edm文件(XML格式)的描述是否与数据库的表相匹配,也就是C-S mapping content节的配置。

    (本文源码:单击下载

  • 相关阅读:
    GridView
    BaseAdapter
    ArrayAdapter,SimpleAdapter
    消息机制,Handler
    进度条对话框
    随机二选一
    (二十五)WebDriver API之上传文件
    (二十四)WebDriver API之警告框处理
    linux常用命令大全
    (二十三)WebDriver API之多窗口切换
  • 原文地址:https://www.cnblogs.com/Alex80/p/5141076.html
Copyright © 2020-2023  润新知