11-使用EF操作数据库

本篇博客对应视频讲解

回顾

上一篇教程我们讲了XML与JSON的序列化问题,我们可以看到序列化实际上也是不同形式的转换,我们通常要以字节流的形式做中转。同时我们也可以看到,对于序列化这种常见的需求,我们可以使用第三方类库更快更好的实现需求。同时也看到了定义式的类,通过C#中特性,可以很方便的定义成员相关的特性。

数据库

数据库是什么这里不多说了,简单说就是组织存储数据用的。我们无时无刻不在获取或处理数据。数据库在各类形式的软件中都发挥重要的作用。 我们今天通过Visual Studio IDE带大家了解一下如何从本地Sql server中查询数据。

实体框架

官方提供了一个实体框架,叫做EntityFramework Core,方便我们在进行对象映射,即把数据库的结构映射到对象(类的表现形式)。然后我们在程序中,仍然是对类的对象进行操作。这样我们就不需要关心数据库是什么样的存储结构了。

安装本地数据库

VIsualStudio Install 安装 Sql Server支持.

使用EntityFramework Core

  1. 安装官方包 Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Tools 使用包管理器。 或者使用dotnet命令: https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

  2. 创建Context类,继承DbContext 覆写OnConfiguring方法,填写连接字符串.. 视图->sql server 对象管理器,连接本地数据库,创建新表。 通过属性,查看连接字符串。 创建实体类,添加到Context。

  3. 使用命令工具,创建数据库 在VS中打开工具->nuget包管理器->nuget包管理控制台 Add-Migrations 生成创建修改数据库的代码, Update-Database 执行代码生成改动到数据库.

  4. 操作数据库 我们来通过示例来看一下我们如何进行数据库的操作。这和我们使用Linq操作普通对象基本是一致的。

       static MyContext _context = MyContext.GetContext();

        static void Main(string[] args)
        {
            JsonConvert.DefaultSettings = () => new JsonSerializerSettings
            {
                Formatting = Newtonsoft.Json.Formatting.None,
                ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
            };

            //Add();
            Select();
            Console.WriteLine("完成");
            Console.ReadLine();
        }

        /// <summary>
        /// 添加
        /// </summary>
        static void Add()
        {
            // 创建用户
            var user = new User
            {
                Email = "abc@outlook.com",
                Name = "NilTor",
                Password = "123123"
            };
            // 添加数据
            var blogs = new List<Blog>()
            {
                new Blog
                {
                    Author = user,
                    Title = "博客",
                    Content = "内容"
                },
                new Blog
                {
                    Author = user,
                    Title = "标题2",
                    Content = "博客内容2"
                }
            };

            _context.Add(user);
            _context.AddRange(blogs);
            var re = _context.SaveChanges();
            Console.WriteLine(re);
        }

        /// <summary>
        /// 查询
        /// </summary>
        static void Select()
        {
            var data = _context.User
                .Include(m => m.Blogs)
                .ToList();

            Console.WriteLine(JsonConvert.SerializeObject(data));
        }
posted @ 2018-10-11 17:33 MSDev_NilTor 阅读(...) 评论(...) 编辑 收藏