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
相关推荐
pchmi1 小时前
C# OpenCV机器视觉:模板匹配
opencv·c#·机器视觉
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭3 小时前
C#都可以找哪些工作?
开发语言·c#
boligongzhu5 小时前
Dalsa线阵CCD相机使用开发手册
c#
向宇it17 小时前
【从零开始入门unity游戏开发之——C#篇23】C#面向对象继承——`as`类型转化和`is`类型检查、向上转型和向下转型、里氏替换原则(LSP)
java·开发语言·unity·c#·游戏引擎·里氏替换原则
sukalot17 小时前
windows C#-命名实参和可选实参(下)
windows·c#
小码编匠17 小时前
.NET 下 RabbitMQ 队列、死信队列、延时队列及小应用
后端·c#·.net
我不是程序猿儿1 天前
【C#】Debug和Release的区别和使用
开发语言·c#
lzhdim1 天前
2、C#基于.net framework的应用开发实战编程 - 设计(二、二) - 编程手把手系列文章...
开发语言·c#·.net
misty youth1 天前
学生信息管理系统
c语言·数据结构·算法·c#