.NetCore下使用EF DbFirst操作MySql

新建.NetCore的控制台项目

 

使用Nuget安装Pomelo.entityframeworkcore.mysql

 

工程右键--->编辑.csproj文件,把以下内容写入到工程文件

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.1" />
</ItemGroup>

 

修改后工程文件如下

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.1.1" />
<PackageReference Include="Snowflake.NetCore" Version="1.0.0" />
</ItemGroup>

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.1" />
</ItemGroup>

</Project>

打开命令行,cd到项目根目录(.csproj所在目录)下,执行如下命令:

dotnet ef dbcontext scaffold "server=localhost;uid=root;pwd=123456;port=3306;database=document;" "Pomelo.EntityFrameworkCore.MySql"-o EF -f

参数说明

-o 输出目录(-OutputDir)

-f 覆盖现有文件(-Force),数据库更新时会用到

-t 指定表名(-Tables)

如果中间出错,请先确保你的工程文件可以编译成功,并使用-f参数覆盖现有文件


执行成功后就可以看到相应的Context和model了。

对于生成的文件,我们不作任何修改,以免更新时造成冲突。

 创建我们自己的ContextConfig类

using Microsoft.EntityFrameworkCore;

namespace EF2MySqlDBFirst.EF
{
    public class DataBaseContextConfig
    {
        private const string LightConnectionString = "server=localhost;userid=root;pwd=123456;port=3306;database=light;";
        private const string LogConnectionString = "server=localhost;userid=root;pwd=123456;port=3306;database=log;";
        /// <summary>
        /// 创建Light数据库上下文
        /// </summary>
        /// <returns></returns>
        public static lightContext CreateLightContext()
        {
            var optionBuilder = new DbContextOptionsBuilder<lightContext>();
            optionBuilder.UseMySql(LightConnectionString);
            var context = new lightContext(optionBuilder.Options);
            return context;
        }
        /// <summary>
        /// 创建log数据库上下文
        /// </summary>
        /// <returns></returns>
        public static logContext CreateLogContext()
        {
            var optionBuilder = new DbContextOptionsBuilder<logContext>();
            optionBuilder.UseMySql(LogConnectionString);
            var context = new logContext(optionBuilder.Options);
            return context;
        }

    }
}

这样使用context对象时,用我们自己生成的类的CreateContex方法创建,保证数据库更新时重新生成的代码对我们的程序没有影响。

测试

static void Main(string[] args)
        {
            using (var context = DataBaseContextConfig.CreateLightContext())
            {
                context.User.Add(new User
                {
                    Age = 22,
                    CreateTime = DateTime.Now,
                    UserName = "zisi",
                    UserId = new IdWorker(1, 1).NextId(),
                    Status = 1,
                });

                context.SaveChanges();
                Console.WriteLine("New date:" + context.User.OrderByDescending(u => u.UserId).FirstOrDefault().CreateTime);
            }
            Console.WriteLine("press enter to exit!");
            Console.ReadLine();
        }

 

转载于:https://www.cnblogs.com/zhaoyongkai/p/9364851.html

.NET Core 6.0中使用Entity Framework(EF)的Database First方式配置连接并进行实战是很简单的。 首先,确保你的项目中已经安装了相应的NuGet包,包括`Microsoft.EntityFrameworkCore.Tools`和`Microsoft.EntityFrameworkCore.SqlServer`(如果你使用SQL Server作为数据库)。 接下来,打开终端或命令提示符窗口,进入你的项目文件夹,并执行以下命令来生成EF的模型类: ``` dotnet ef dbcontext scaffold "YourConnectionString" Microsoft.EntityFrameworkCore.SqlServer -o Models ``` 在这个命令中,你需要将"YourConnectionString"替换为你的数据库连接字符串。该命令将自动生成EF的模型类,并将其放在`Models`文件夹中。 完成上述步骤后,你就可以在代码中使用这些生成的模型类来与数据库进行交互了。例如,你可以编写以下代码来获取数据库中的数据: ```csharp using System; using System.Linq; using Microsoft.EntityFrameworkCore; using YourProject.Models; // 替换为你生成的模型类所在的命名空间 namespace YourProject { class Program { static void Main(string[] args) { using (var context = new YourDbContext()) // 替换为你生成的DbContext类的名称 { var data = context.YourTableName.ToList(); // 替换为你数据库中的表名称 foreach (var item in data) { Console.WriteLine(item.PropertyName); // 替换为你表中的属性名称 } } } } } ``` 以上代码演示了如何通过使用生成的模型类和DbContext类来查询数据库中的数据。 这就是在.NET Core 6.0中使用EF的Database First方式配置连接并进行实战的简单过程。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值