使用EF 连接 数据库 SQLserver、MySql 实现 CodeFirst

ef,sqlserver,mysql,codefirst · 浏览次数 : 0

小编点评

以下是根据您的要求生成的Markdown格式内容: # 新建项目并使用NuGet安装包 在创建基于.NET Framework的项目时,您需要选择相应版本的Entity Framework(EF)。对于MySQL项目,请下载并使用相应的包。 ## 选择适当的EF版本 - 对于.NET Framework项目,请选择**EntityFramework 6.3.0**。 - 对于MySQL项目,请下载**EntityFramework 6.3.0**和**MySql.Data 6.8.8**及**MySql.Data.Entities 6.8.3**包。 ## 创建EFModel 在项目中创建一个名为`BaseDevice`的类,并使用`Table`属性定义数据库表结构。 ```csharp public class BaseDevice { [Key] public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } } ``` 创建一个名为`BaseDeviceDbContext`的类,继承自`DbContext`,并设置数据库初始化器。 ```csharp public class BaseDeviceDbContext : DbContext { public BaseDeviceDbContext() : base("myConn") { Database.SetInitializer(new DropCreateDatabaseIfModelChanges()); } public DbSet BaseDevice { get; set; } } ``` ## 操作数据库 在`TestCodeFirst`方法中执行数据库操作,包括查询、添加、更新和删除数据。 ```csharp public static void TestCodeFirst() { using (var context = new BaseDeviceDbContext()) { // 查询数据 List models = context.BaseDevice.ToList(); // 添加数据 context.BaseDevice.Add(new BaseDevice { Id = 1, Name = "New Model", Description = "Description" }); context.BaseDevice.Add(new BaseDevice { Id = 3, Name = "New Model", Description = "Description" }); context.SaveChanges(); // 更新数据 var model = context.BaseDevice.FirstOrDefault(m => m.Id == 1); if (model != null) { model.Name = "Updated Name"; context.SaveChanges(); } // 删除数据 context.BaseDevice.Remove(model); context.SaveChanges(); } } ``` 按照以上步骤操作数据库,您可以轻松地使用Entity Framework Code First创建、管理和操作数据库。

正文

1.新建项目,下载Nuget安装包

创建项目需要注意几点,如果是基于 .net framework 的项目 需要选择 相应版本的 EF, 如果是跨平台则选择EF Core版本。

我这里选择的是 .net framework 版本。红框里面是 实现EF Code First 需要的包。

对应的版本:

EntityFramework 6.3.0

MySql.Data 6.8.8

MySql.Data.Entities 6.8.3 

如果是连接SqlServer 很简单,直接下载 EntityFramework 6.3.0 这个一个包就行了。程序集会引入这两个组件。然后编写代码即可。

 

 针对MySQL 需要再下载这两个包

 

 

下载完成后设置App.config或者 Web.config 文件  ,这一步下载包的时候一般会自动添加,如果没有的话就手动加一下

  <entityFramework>
    <providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
  </entityFramework>

2.创建EFModel

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleWebSocket.Models
{
    [Table("BaseDevice")]
    public class BaseDevice
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }

    public class BaseDeviceDbContext : DbContext
    {
        public BaseDeviceDbContext()
           : base("myConn")
        {
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BaseDeviceDbContext>());
        }

        public DbSet<BaseDevice> BaseDevice { get; set; }
    }
}

4.操作数据库 测试

        /// <summary>
        /// code first 
        /// </summary>
        public static void TestCodeFirst()
        {
            using (var context = new BaseDeviceDbContext())
            {
                // 查询数据
              List<BaseDevice> models = context.BaseDevice.ToList();

                // 添加数据
                context.BaseDevice.Add(new BaseDevice { Id = 1, Name = "New Model", Description= "Description" });
                context.BaseDevice.Add(new BaseDevice { Id = 3, Name = "New Model", Description = "Description" });
                context.SaveChanges();

                //// 更新数据
                var model = context.BaseDevice.FirstOrDefault(m => m.Id == 1);
                if (model != null)
                {
                    model.Name = "Updated Name";
                    context.SaveChanges();
                }

                // 删除数据
                context.BaseDevice.Remove(model);
                context.SaveChanges();
            }
        }

 

与使用EF 连接 数据库 SQLserver、MySql 实现 CodeFirst相似的内容:

使用EF 连接 数据库 SQLserver、MySql 实现 CodeFirst

1.新建项目,下载Nuget安装包 创建项目需要注意几点,如果是基于 .net framework 的项目 需要选择 相应版本的 EF, 如果是跨平台则选择EF Core版本。 我这里选择的是 .net framework 版本。红框里面是 实现EF Code First 需要的包。 对应的版本:

.NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移

前言 接上期文章《.NET6项目连接数据库方式方法》,有人问了我几个问题,现在就这几个问题,拓展延申一下创建实体类、数据库。把ORM框架和数据迁移都写进去。 安装ORM框架,这里我们采用EFCore 安装EFCore 我的项目是在Linux上创建的,使用的是vscode开发工具远程开发。为了方便大家

外键拆分手记

我习惯性使用OData,它的$expand与层级查询非常好用,这个功能非常依赖于数据库的导航属性,也就是外键结构。最近想着把一个单体的系统拆分为多个小系统,首先需要处理外键依赖的问题。 多个服务各自有各自的数据库,数据库层面并不互通,也就无法使用外键约束。 我使用EF Core来描述数据库的结构,有

KylinV10升级部分软件的简单方法

背景 2022-12-26有同事晚上在群里反馈客户现场的测试环境内存紧张. 我这边第一反应是进程重复了,导致内存使用量飙升. 告知现场使用 ps -ef |grep java |grep caf 发现只有一个进程. 然后使用 top 然后输入 M 使用内存排序: 发现除了java主服务之后还有 au

基于EF Core存储的国际化服务

前言 .NET 官方有一个用来管理国际化资源的扩展包Microsoft.Extensions.Localization,ASP.NET Core也用这个来实现国际化功能。但是这个包的翻译数据是使用resx资源文件来管理的,这就意味着无法动态管理。虽然官方有在文档中提供了一些第三方管理方案,但是都不太

EF Core从TPH迁移到TPT

Intro EF Core支持多种方式处理具有继承关系的表,现在支持TPH、TPC(EF Core 7)、TPT,具体的实现方式可以参考官方文档和这篇文章。 大致总结一下不同的方式的区别: TPH:所有的类型都放在一张表中,使用discriminator字段用以区别不同的类型 TPT:不同的子类型有

[MAUI 项目实战] 笔记App(二):数据库设计

@目录Sqlite配置创建实体笔记实体类笔记分组实体笔记片段实体笔记片段负载实体笔记片段仓库实体笔记模板(场景)实体笔记片段模板实体笔记片段模板负载实体配置EF创建映射迁移和种子数据项目地址 Sqlite配置 应用程序里使用Sqlite作为数据库,使用EntityFramworkCore作为ORM,

使用Cloudflare Worker加速docker镜像

前言 开发者越来越难了,现在国内的docker镜像也都️了,没有镜像要使用docker太难了,代理又很慢 现在就只剩下自建镜像的办法了 GitHub上有开源项目可以快速搭建自己的镜像库,不过还是有点麻烦,还好Cloudflare暂时还活着‍ 本文记录一下使用 Cloudf

使用C#/.NET解析Wiki百科数据实现获取历史上的今天

创建一个webapi项目做测试使用。 创建新控制器,搭建一个基础框架,包括获取当天日期、wiki的请求地址等 创建一个Http请求帮助类以及方法,用于获取指定URL的信息 使用http请求访问指定url,先运行一下,看看返回的内容。内容如图右边所示,实际上是一个Json数据。我们主要解析 大事记 部

Pybind11和CMake构建python扩展模块环境搭建

使用pybind11的CMake模板来创建拓展环境搭建 从Github上下载cmake_example的模板,切换分支,并升级pybind11子模块到最新版本 拉取pybind11使用cmake构建工具的模板仓库 git clone --recursive https://github.com/mr