基于Furion 本身项目有个 EFCore连接MSSQL
现在需要连接MySQL 取数据
步骤一:添加 数据库上下文定位器 MySqlDbContextLocator
建议放 Furion.Core 项目
///
/// 数据库上下文定位器
///
public sealed class MySqlDbContextLocator : IDbContextLocator
{
}
步骤二:添加数据库上下文,且和 定位器 绑定
建议放 Furion.EntityFramework.Core / DbContexts /MySqlDbContext.cs
[AppDbContext("MysqlConnectionString",DbProvider.MySql)]
public class MySqlDbContext : AppDbContext
{
public MySqlDbContext(DbContextOptions options) : base(options)
{
}
}
步骤三: 添加entity(表类) 要继承 : IEntity
建议放 Furion.Core / Entities
public class i18n_locales : IEntity
{
public int ID { get; set; }
public int created_by { get; set; }
public string name { get; set; }
public string code { get; set; }
}
步骤四:配置连接字符串
如果你是web 建议放 : Furion/ samples / Furion.Web.Entry / appsettings.json
步骤五 :将MySQL连接 添加数据库池
建议放 Furion.EntityFramework.Core/startup. cs
public class Startup : AppStartup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDatabaseAccessor(options =>
{
options.CustomizeMultiTenants();
options.AddDbPool(DbProvider.MySql);
options.AddDbPool(DbProvider.SqlServer);
}, "JoyAdmin.Database.Migrations");
}
}
步骤六 :Service 程序调用
建议放 Furion.Application
public class RBACService : IDynamicApiController
{
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IRepository _userRepository;
private readonly IRepository _essRepository;
// 注意这里的类型
private readonly IRepository _DeviceNoClassRepository;
public RBACService(IHttpContextAccessor httpContextAccessor
, IRepository userRepository
, IRepository essRepository
, IRepository DeviceNoClassRepository
)
{
_httpContextAccessor = httpContextAccessor;
_userRepository = userRepository;
_essRepository = essRepository;
_DeviceNoClassRepository = DeviceNoClassRepository;
}
///
/// 获取设备号列表
///
///
public List GetListDeviceNo()
{
var list = _DeviceNoClassRepository.AsQueryable().Adapt>();
return list;
}
到此结束 但可能还有问题
问题一:Cannot create a DbSet for 'i18n_locales' because this type is not included in the model for the context.
无法为“i18n_locales”创建GbSet,因为该类型不包括在上下文的模型中。
因为 IRepository
在 RBACService中
, IRepository
, IRepository
问题二:The dbcontext locator `MySqlDbContextLocator` is not bind.
dbcontext定位器' MyMQlGbContextHandler '未绑定。
配置数据库连接的时候 指明 定位器
options.AddDbPool
options.AddDbPool
问题三:实体类型“i18n_locales”需要定义一个主密钥。如果您打算使用无键实体类型,请在“OnModel Creating”中调用“HasNoKey”。
创建的 entity 必须有一个以 ID 命名的字段