4.添加对efcore的支持 ,并使用mysql数据库。
1.添加并加入
在project.json中添加
1 2 3 4 5 6 7 8 9 10 11 12 | "tools" : { "Microsoft.EntityFrameworkCore.Tools" : "1.0.0-preview2-final" }, "dependencies" : { "Microsoft.NETCore.App" : { "type" : "platform" , "version" : "1.0.0" }, "Pomelo.EntityFrameworkCore.MySql" : "1.0.1" , "Microsoft.EntityFrameworkCore.Tools" : "1.0.0-preview2-final" }, |
在 tools中加入
1 | "Microsoft.EntityFrameworkCore.Tools" : "1.0.0-preview2-final" <br><br>在dependencies中加入 |
1 2 | "Pomelo.EntityFrameworkCore.MySql" : "1.0.1" , "Microsoft.EntityFrameworkCore.Tools" : "1.0.0-preview2-final" <br>在Startup.cs中加入 |
1 2 3 4 5 6 7 8 9 | public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); services.AddDbContext<这里填写你的DbContext>(options => options.UseMySql(Configuration.GetConnectionString( "DefaultConnectionString" ))); services.AddMvc(); } |
下面这个地方可以直接填写你的数据库连接字符串。//比如 "Server=localhost;database=MySqlDemo;uid=root;pwd=123456;"
1 | services.AddDbContext<这里填写你的DbContext>(options => options.UseMySql(Configuration.GetConnectionString( "DefaultConnectionString" ))); |
1 | 这里的Configuration读取的是appsettings.json 。<br>所以你要在appsetting.json 添加一个 |
"ConnectionStrings": { "DefaultConnectionString": "Server=localhost;database=MySqlDemo;uid=Quan;pwd=123456;" },
然后他就可以读到这个字符串了。
当然你的DbContext一定要有构造方法。
public class MySqlDemoContext : DbContext { public MySqlDemoContext(DbContextOptions<MySqlDemoContext> options): base(options) { }
}
1 | 这样你的mysql数据库就能练得上了,可以当然但是这样连接上去并存入数据有可能会报错,因为efcore,并不会主动地创建数据库 |
public class MySqlDemoInitializer { public static void Seed(IApplicationBuilder app) { // Get an instance of the DbContext from the DI container using (var context = app.ApplicationServices.GetRequiredService<MySqlDemoContext>()) { //如果数据库不存在就会去创建 context.Database.EnsureCreated(); //这里半段有无数据在在表里,如果有不初始化数据,如果没有就初始化 if (context.Set<Account>().Any() == false) { SetBasicData(context); SetTestAdmin(context); #if DEBUG SetTestNews(context); SetTestCase(context); SetTestPartner(context); SetTestCompany(context); SetTestPosition(context); SetTestProblem(context); SetTestRefund(context); #endif } } }
1 | 这里就是一个初始化的方法,在startup.cs中运行该方法 这个方式初始化有一个不灵活的地方,当程序运行之后只会执行一次。并不会像ef6那样,运行之后也会判断数据库,不存在也会去创建。<br><br> |
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { //将该方法放于最后执行 MySqlDemoInitializer.Seed(app); }
1 | <em><br></em>还有一点,取数据的时候,取出来的Model是不会带有外键<br>这里就要用贪心加载 这样他就能取出Model所关联的外键 |
db.Set<Account>() .Include(m => m.Role) .Include(m => m.AccountInfo) .Include(m => m.AccountModules);
还有如何在Controller中使用
public class AccountController : Controller { private AccountService _accountServ; public AccountController(MySqlDemoContext _db) { _accountServ = new AccountService(_db); } }
通过依赖注入,程序会自动将MySqlDemoContext new出来,并注入进来
分类:
Dotnet Core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?