Cat.Data/Cat.Data.EF/DbContext/SqlServerDbContext.cs
(完整代码) 2KBusing System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Configuration;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Cat.Util;
namespace Cat.Data.EF
{
public class SqlServerDbContext : DbContext, IDisposable
{
private string ConnectionString { get; set; }
#region 构造函数
public SqlServerDbContext(string connectionString)
{
ConnectionString = connectionString;
}
#endregion
#region 重载
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(ConnectionString, p => p.CommandTimeout(GlobalContext.SystemConfig.DBCommandTimeout));
optionsBuilder.AddInterceptors(new DbCommandCustomInterceptor());
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
Assembly entityAssembly = Assembly.Load(new AssemblyName("Cat.Entity"));
IEnumerable<Type> typesToRegister = entityAssembly.GetTypes().Where(p => !string.IsNullOrEmpty(p.Namespace))
.Where(p => !string.IsNullOrEmpty(p.GetCustomAttribute<TableAttribute>()?.Name));
foreach (Type type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Model.AddEntityType(type);
}
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
PrimaryKeyConvention.SetPrimaryKey(modelBuilder, entity.Name);
string currentTableName = modelBuilder.Entity(entity.Name).Metadata.GetTableName();
modelBuilder.Entity(entity.Name).ToTable(currentTableName);
//var properties = entity.GetProperties();
//foreach (var property in properties)
//{
// ColumnConvention.SetColumnName(modelBuilder, entity.Name, property.Name);
//}
}
base.OnModelCreating(modelBuilder);
}
#endregion
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。