第一步:创建空白解决方案
第二步:添加.NET Core类库
第三步:添加.NET Core应用程序
第四步:在CoreDAL项目上安装NuGet包
1、Microsoft.EntityFrameworkCore
2、Microsoft.EntityFrameworkCore.SqlServer(因笔者用的是SqlServer)
3、Microsoft.EntityFrameworkCore.Tools
第五步:生成model
在CoreDA项目中添加EFModel文件夹,打开NuGet控制台,输入命令
Scaffold-DbContext "Data Source=ip(一般使用);Initial Catalog=数据库名称;User ID=登录名;Password=登录密码" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EFModel
注意:数据库表的修改,同步更新Model时,命令加-Force 参数就可以了,如:
Scaffold-DbContext "Data Source=ip(一般使用);Initial Catalog=数据库名称;User ID=登录名;Password=登录密码" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EFModel -Force
系统会自动生DbContext上下文及数据表实体,在AppCore项目添加项目引用CoreDAL
第六步:实现CoreDAL项目
添加接口IRoleDAL
using System.Collections.Generic;
using CoreDAL.Models;
namespace CoreDAL.Interface
{
public interface IRoleDAL
{
List<Role> GetRoles();
}
}
添加实现类RoleDAL
using System;
using System.Collections.Generic;
using System.Linq;
using CoreDAL.Models;
using CoreDAL.Interface;
namespace CoreDAL
{
public class RoleDAL:IRoleDAL
{
public List<Role> GetRoles()
{
using (var client = new LegalContext())
{
return client.Role.ToList();
}
}
}
}
第七步:依赖注入
在Startup.cs 添加
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddSingleton<IRoleDAL, RoleDAL>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
在HomeController.cs中添加
private readonly IRoleDAL _roleDAL;
public HomeController(IRoleDAL roleDAL)
{
_roleDAL = roleDAL;
}
在index中通过_roleDAL.GetRoles()就可以调用
第八步:发布
对于CoreDAL项目,DBContext中的数据连接字符串放在代码中,修改不太方便,笔者把ConnectionString放在AppCore项目中的appseting.json文件中,appsetting.json文件格式为:
{
"ConnectionStrings": {
"LegalDB": "Server=你的数据IP;Database=数据库名称;User ID=用户名;Password=密码"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
配置好appsetting.json后,需在CoreDAL项目中添加NuGet包:
1、安装Microsoft.Extensions.Configuration.Json包(此包用来获取配置字符串)
2、在LegalContext文件中,找到OnConfiguring方法中替换默认生成的注册数据库连接字符串代码,添加如下代码:
IConfigurationBuilder builder = new ConfigurationBuilder();
builder.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
var configuration = builder.Build();
optionsBuilder.UseSqlServer(configuration.GetConnectionString("LegalDB"));
注意:需要引入命名空间:
using System.IO;
using Microsoft.Extensions.Configuration;
OK,搞定,希望能帮助到大家!