• 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));
            }
    
  • 相关阅读:
    ubuntu14.04 remmina远程连接rdp服务器失败解决办法
    python3测试手机suspend/resume(休眠/唤醒)
    链表和数组的区别
    在ubuntu下打开windows系统下编辑的.txt文件,中文显示为乱码的解决方法
    python实例:删除列表中重复的元素
    python中lambda函数
    STL-- vector
    Leetcode -- Two Sum
    Perl5的包和模块
    Perl中的面向对象编程
  • 原文地址:https://www.cnblogs.com/msdeveloper/p/9773869.html
Copyright © 2020-2023  润新知