新建.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(); }

