src/ZKEACMS/EntityFrameWorkConfigure.cs
(完整代码) 2KB/* http://www.zkea.net/
* Copyright (c) ZKEASOFT. All rights reserved.
* http://www.zkea.net/licenses */
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using System;
using System.Data.Common;
using ZKEACMS.DbConnectionPool;
using ZKEACMS.Options;
namespace ZKEACMS
{
public class EntityFrameWorkConfigure: IDatabaseConfiguring
{
private readonly DatabaseOption _dataBaseOption;
private readonly ILoggerFactory _loggerFactory;
public EntityFrameWorkConfigure(DatabaseOption dataBaseOption, ILoggerFactory loggerFactory)
{
_dataBaseOption = dataBaseOption;
_loggerFactory = loggerFactory;
}
public void OnConfiguring(DbContextOptionsBuilder optionsBuilder, DbConnection dbConnectionForReusing)
{
switch (_dataBaseOption.DbType)
{
case Easy.DbTypes.MsSql:
{
if (dbConnectionForReusing != null)
optionsBuilder.UseSqlServer(dbConnectionForReusing);
else
optionsBuilder.UseSqlServer(_dataBaseOption.ConnectionString);
break;
}
case Easy.DbTypes.MsSqlEarly:
{
throw new Exception("Starting with EF Core 3.0, EF will only generate SQL for paging that is only compatible with later SQL Server versions. Because SQL Server 2008 is no longer a supported product.");
}
case Easy.DbTypes.Sqlite:
{
if (dbConnectionForReusing != null)
optionsBuilder.UseSqlite(dbConnectionForReusing);
else
optionsBuilder.UseSqlite(_dataBaseOption.ConnectionString);
break;
}
case Easy.DbTypes.MySql:
{
if (dbConnectionForReusing != null)
optionsBuilder.UseMySql(dbConnectionForReusing, ServerVersion.AutoDetect(dbConnectionForReusing as MySqlConnector.MySqlConnection));
else
optionsBuilder.UseMySql(_dataBaseOption.ConnectionString , ServerVersion.AutoDetect(_dataBaseOption.ConnectionString));
break;
}
}
optionsBuilder.UseLoggerFactory(_loggerFactory);
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。