C# EF 使用

WPF EF MySQL

- - - 版本
.NET Framework 4.7.2
EntityFramework 6.5.1
MySql.Data.EntityFramework 9.1.0
  • 创建数据库 cc
  • App.config
xml 复制代码
<connectionStrings>
    <add name="MyDbContext" providerName="MySql.Data.MySqlClient" connectionString="server=127.0.0.1;port=3306;database=cc;user=root;password=123456;persistsecurityinfo = True;Character Set=utf8;" />
</connectionStrings>
<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient"/>
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=9.1.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
    </DbProviderFactories>
</system.data>
  • 测试
csharp 复制代码
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();


        try
        {
            using (var context = new MyDbContext())
            { 

                // 查询
                var entities = context.MyEntities.Where(e => e.Name == "example").ToList();

                // 添加
                var newEntity = new MyEntity { Name = "new example" };
                context.MyEntities.Add(newEntity);
                context.SaveChanges();

                // 更新
                //var existingEntity = context.MyEntities.Find(newEntity.Id);
                //existingEntity.Name = "updated example";
                //context.SaveChanges();

                // 删除
                // context.MyEntities.Remove(existingEntity);
                //context.SaveChanges();
            }
        }catch (Exception ex)
        {
            var d = "";
        }



    }
}


[DbConfigurationType(typeof(MySql.Data.EntityFramework.MySqlEFConfiguration))]
public class MyDbContext : DbContext
{
    public MyDbContext() : base("name=MyDbContext")
    { 
    } 

    public DbSet<MyEntity> MyEntities { get; set; }
}

[Table("my_table")]
public class MyEntity
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    [StringLength(100)]
    public string Name { get; set; }
}
  • 打开 NuGet 包管理器控制台
bash 复制代码
Enable-Migrations -Force # 会在跟目录生成 Migrations\Configuration.cs
AutomaticMigrationsEnabled = true;  # Configuration.cs 中修改
update-database -Force	# 迁移
bash 复制代码
Enable-Migrations [-ContextTypeName <String>] [-EnableAutomaticMigrations] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConnectionStringName <String>] [-Force] [<CommonParameters>]
ContextTypeName:项目继承自DBContext的类名字。
EnableAutomaticMigrations:开启自动迁移。
ProjectName:存放DBContext类的项目名称。
StartUpProjectName:解决方案中启动项目的名称,作用是调用该项目下的连接字符串。
ConnectionStringName:连接字符串名称

Enable-Migrations -ContextTypeName "WpfApp2.MyDbContext" -ProjectName "WpfApp2" -StartUpProjectName "WpfApp2" -ConnectionStringName "MyDbContext" -Verbose -Force
update-database  -ProjectName "WpfApp2" -StartUpProjectName "WpfApp2" -ConnectionStringName "MyDbContext"  -Verbose -Force

WPF EF SQLServer

- - - 版本
.NET Framework 4.7.2
EntityFramework 6.5.1
  • 创建数据库 cc
  • App.config
xml 复制代码
<connectionStrings>
    <add name="MyDbContext" providerName="System.Data.SqlClient" connectionString="data source=LAPTOP-EGHJ2RO7;initial catalog=t1;user id=sa;password=1234567;connection timeout=5" />
</connectionStrings>
  • 测试
csharp 复制代码
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();


        try
        {
            using (var context = new MyDbContext())
            { 

                // 查询
                var entities = context.MyEntities.Where(e => e.Name == "example").ToList();

                // 添加
                var newEntity = new MyEntity { Name = "new example" };
                context.MyEntities.Add(newEntity);
                context.SaveChanges();

                // 更新
                //var existingEntity = context.MyEntities.Find(newEntity.Id);
                //existingEntity.Name = "updated example";
                //context.SaveChanges();

                // 删除
                // context.MyEntities.Remove(existingEntity);
                //context.SaveChanges();
            }
        }catch (Exception ex)
        {
            var d = "";
        }



    }
}

public class MyDbContext : DbContext
{
    public MyDbContext() : base("name=MyDbContext")
    { 
    } 

    public DbSet<MyEntity> MyEntities { get; set; }
}

[Table("my_table")]
public class MyEntity
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    [StringLength(100)]
    public string Name { get; set; }
}
  • 打开 NuGet 包管理器控制台
bash 复制代码
Enable-Migrations -Force # 会在跟目录生成 Migrations\Configuration.cs
AutomaticMigrationsEnabled = true;  # Configuration.cs 中修改
update-database -Force	# 迁移
bash 复制代码
Enable-Migrations [-ContextTypeName <String>] [-EnableAutomaticMigrations] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConnectionStringName <String>] [-Force] [<CommonParameters>]
ContextTypeName:项目继承自DBContext的类名字。
EnableAutomaticMigrations:开启自动迁移。
ProjectName:存放DBContext类的项目名称。
StartUpProjectName:解决方案中启动项目的名称,作用是调用该项目下的连接字符串。
ConnectionStringName:连接字符串名称

Enable-Migrations -ContextTypeName "WpfApp2.MyDbContext" -ProjectName "WpfApp2" -StartUpProjectName "WpfApp2" -ConnectionStringName "MyDbContext" -Verbose -Force
update-database  -ProjectName "WpfApp2" -StartUpProjectName "WpfApp2" -ConnectionStringName "MyDbContext"  -Verbose -Force
相关推荐
闪电麦坤957 小时前
C#:base 关键字
开发语言·c#
mingupup8 小时前
C#连接小智服务器并将音频解码播放过程记录
c#
爱吃奶酪的松鼠丶11 小时前
.net GRPC服务搭建,跨进程调用。C#应用和Python应用之间的通信。
python·c#·.net
勘察加熊人16 小时前
forms实现俄罗斯方块
c#
艾妮艾妮20 小时前
C语言常见3种排序
java·c语言·开发语言·c++·算法·c#·排序算法
小码编匠20 小时前
.NET 验证码生成神器基于 SkiaSharp 的高性能方案
后端·c#·.net
专注VB编程开发20年20 小时前
Aspose.words,Aspose.cells,vb.net,c#加载许可证,生成操作选择:嵌入的资源
c#·word·.net·vb.net
andy552021 小时前
.NET 使用 WMQ 连接Queue 发送 message 实例
xml·c#·wmq·c# 连接wmq·发送消息到wmq
破罐子不摔21 小时前
【C#使用S7.NET库读取和写入西门子PLC变量】
java·c#·.net
杰尼杰尼丶21 小时前
Winform MQTT客户端连接方式
c#·winform