4.添加对efcore的支持 ,并使用mysql数据库。
2016-10-27 10:17
225 查看
1.添加并加入
在project.json中添加
在 tools中加入
下面这个地方可以直接填写你的数据库连接字符串。//比如 "Server=localhost;database=MySqlDemo;uid=root;pwd=123456;"
然后他就可以读到这个字符串了。
当然你的DbContext一定要有构造方法。
还有如何在Controller中使用
通过依赖注入,程序会自动将MySqlDemoContext new出来,并注入进来
在project.json中添加
"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中加入
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 在dependencies中加入
"Pomelo.EntityFrameworkCore.MySql": "1.0.1", "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 在Startup.cs中加入
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;"
services.AddDbContext<这里填写你的DbContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnectionString")));
这里的Configuration读取的是appsettings.json 。 所以你要在appsetting.json 添加一个
"ConnectionStrings": { "DefaultConnectionString": "Server=localhost;database=MySqlDemo;uid=Quan;pwd=123456;" },
然后他就可以读到这个字符串了。
当然你的DbContext一定要有构造方法。
public class MySqlDemoContext : DbContext { public MySqlDemoContext(DbContextOptions<MySqlDemoContext> options): base(options) { } }
这样你的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 } } }
这里就是一个初始化的方法,在startup.cs中运行该方法 这个方式初始化有一个不灵活的地方,当程序运行之后只会执行一次。并不会像ef6那样,运行之后也会判断数据库,不存在也会去创建。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { //将该方法放于最后执行 MySqlDemoInitializer.Seed(app); }
还有一点,取数据的时候,取出来的Model是不会带有外键 这里就要用贪心加载 这样他就能取出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出来,并注入进来
相关文章推荐
- ProFTPD 支持MySQL数据库添加虚拟用户认证及Quotas(磁盘限额)
- 文件服务器 之 ProFTPD 支持MySQL数据库添加虚拟用户认证及Quotas(磁盘限额)
- 此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象
- 手动添加SSH支持、使用c3p0
- 使用IIS7官方的Url重写模块,为 Discuz!NT 添加伪静态支持
- CP How-To:如何使用cPanel添加Mysql数据库
- 关于使用mysql数据库在链接中添加编码的问题
- c++中使用boost::regex(由于标准库中版本过低,导致不支持多行,需手动编译添加最新版的boost库)
- Meshlab中IO插件编写_使用自已添加的external支持库
- 使用Oracle SQL Developer迁移MySQL数据库的支持信息
- ProFTPD 支持MySQL数据库添加虚拟用户认证及Quotas(磁盘限额)
- 使用 Windows Media Format 9 Series SDK 添加 Windows Media 支持
- 如何使用范型技术在C++中添加对JavaScript的支持
- [C] tcharall(让所有平台支持TCHAR)v1.1。源码托管到github、添加CMake编译配置文件、使用doxygen规范注释
- 最新版本的ppsip v3 SDK(采用全新的架构,并添加了视频支持,音视频引擎使用GIPS(基于WebRTC))发布了(联系dotphoenix@qq.com)。
- ProFTPD 支持MySQL数据库添加虚拟用户认证及Quotas(磁盘限额)
- 使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
- 使用 Windows Media Format 9 Series SDK 添加 Windows Media 支持
- 为仿真器添加eCos多线程调试支持,GDBServer Extender 0.0.1 使用说明
- 使用cocoapods添加的库和不支持arm64的API真机调试问题