使用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从TPH迁移到TPT

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

使用explain优化慢查询的业务场景分析

问:你最害怕的事情是什么? 答:搓澡 问:为什么? 答:因为有些人一旦错过,就不在了 Explain 这个词在不同的上下文中有不同的含义。在数据库查询优化的上下文中,"EXPLAIN" 是一个常用的 SQL 命令,用于显示 SQL 查询的执行计划。执行计划是数据库如何执行查询的一个详细描述,包括它将

使用Github Action来辅助项目管理

Github action 是一个Github官方提供的非常流行且速度集成 持续集成和持续交付(CI/CD)的工具。它允许你在GitHub仓库中自动化、定制和执行你的软件开发工作流。你可以发现、创建和分享用于执行任何你想要的工作的操作,包括CI/CD,并在完全定制的工作流中组合操作。 持续集成需要做

使用 GPU 进行 Lightmap 烘焙 - 简单 demo

作者:i_dovelemon 日期:2024-06-16 主题:Lightmap, PathTracer, Compute Shader 引言 一直以来,我都对离线 bake lightmap 操作很着迷。一方面,这个方案历久弥新,虽然很古老,但是一直在实际项目中都有使用;另一方面,它能够产生非常高

使用 Spring 实现控制反转和依赖注入

使用 Spring 实现控制反转和依赖注入 概述 在本文中,我们将介绍IoC(控制反转)和DI(依赖注入)的概念,以及如何在Spring框架中实现它们。 什么是控制反转? 控制反转是软件工程中的一个原则,它将对象或程序的某些部分的控制权转移给容器或框架。我们最常在面向对象编程的上下文中使用它。 与传

使用Kubesec检查YAML文件安全

使用Kubesec检查YAML文件安全,YAML文件是Kubernetes配置的主要载体,因此,检查YAML文件的安全性对于确保Kubernetes集群的安全至关重要,Kubesec简介,使用Kubesec检查YAML文件安全,kubesec scan podyamlsafe.yaml