c# ef ToTable(tablename,schame),动态加载时schame无效
然后,动态映射到表里。
如果所有表在同一个数据库his里,那么这段代码没问题。
但是我想把部分表(assets)分离出来。然后添加了schame参数,但是发现不起作用,他还是映射为his.xxxx。
之前我弄一个项目的时候,不是用动态加载的方法,但是可以的。很奇怪不知道为什么。请大神指教一下。
之前
↓这是动态的代码。现在的项目
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var modelAssemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a=>a.FullName.Contains("HIS.Models"));
if (modelAssemblies.Count() > 0)
{
foreach(var modelAssembly in modelAssemblies)
{
try
{
var models = modelAssembly.GetTypes();
foreach (var model in models)
{
var attr = model.GetCustomAttributes(typeof(SchemaAttribute), true);
if (attr?.Length>0)
{
var schemaattr = attr.First() as SchemaAttribute;
var schema = schemaattr.Name.ToLower();// assets
modelBuilder.Entity(model).ToTable(model.Name, schema);
Console.WriteLine($"loaded schema:{schema},table:{model.Name}");
}
else
{
modelBuilder.Entity(model).ToTable(model.Name);
Console.WriteLine($"loaded schema:default,table:{model.Name}");
}
}
}
catch(Exception err)
{
Console.WriteLine(err.Message);
}
}
}
//base.OnModelCreating(modelBuilder);
}
↓这是之前的项目的代码,可以映射成功。
//PersonnelSchema是一个静态字符串
modelBuilder.Entity<Education>().ToTable(nameof(Education), PersonnelSchema);
相关推荐
C# dynamic与Attribute误用:类型安全与设计哲学的警示录
在C#开发中,dynamic关键字和自定义Attribute常被用于提升灵活性,但其本质是绕过编译期类型检查与静态契约约束。dynamic依赖RuntimeBinder实现运行时绑定,带来调试困难、序列化兼容性问题、单元测试失效等隐性成本;而将业务逻辑(如权限、缓存、重试)硬编码进Attribute,则破坏关注点分离,导致配置不可维护、校验缺失、跨层耦合。二者共同暴露抽象泄漏问题——本该由编译器保障的类型安全,或由DI/配置中心承载的策略决策,被错误下放到元数据与运行时。本文聚焦.NET生态中高频踩坑场景,
.NET 8 分库分表实战:AI 辅助构建高性能订单系统架构
数据库水平扩展是应对海量数据增长的核心技术方案,其核心原理是通过将数据分散到多个物理节点,以突破单机在I/O、连接数和锁竞争上的性能瓶颈。这项技术能显著提升系统的读写吞吐量和存储容量,是实现高并发、高可用架构的关键。在电商、社交、物联网等数据密集型应用场景中,分库分表是支撑业务持续增长的基石。本文将聚焦于 .NET 技术栈,结合 Entity Framework Core,深入探讨如何设计分片键与路由策略,并解决跨分片查询这一经典难题。同时,文章将展示如何利用 AI 工具辅助进行架构决策和代码生成,提升工程
VOL_常用记录!!-----后端
注意事项:后台扩展必须写在代码生成的Partial部分类里面。
轻量级Winform快速开发框架:设计、实现与实战应用
在C/S架构的桌面应用开发中,如何提升开发效率、保证代码质量并快速响应业务变化,是开发者面临的核心挑战。其原理在于通过分层架构、模块化设计和通用模式,将数据访问、用户界面、权限管理等通用功能标准化。这种技术方案的价值在于,它能将开发者从重复的“造轮子”工作中解放出来,专注于业务逻辑创新,显著缩短项目周期。典型的应用场景包括企业内部管理系统、中小型工具软件等需要快速迭代的Winform项目。本文聚焦于轻量级Winform快速开发框架的设计与实现,深入探讨了其**数据访问层(DAL)的抽象**与**权限管理模块
基于混合储能协调控制的三相并网逆变系统设计【附说明文档】
内容概要:本文围绕“基于混合储能协调控制的三相并网逆变系统设计”展开,系统阐述了蓄电池与飞轮储能等混合储能系统在微电网中的协同控制策略。研究涵盖三相并网逆变器的能量管理、SOC(荷电状态)恒压恒流充放电控制、PQ控制与双闭环控制等核心技术,并基于Matlab/Simulink仿真平台实现了系统建模与动态仿真验证。文中深入探讨了飞轮储能系统的机侧PQ控制与网侧变流器的恒压双闭环控制,分析了微电网在调频调峰、功率协同分配等方面的运行特性,强调多能源间的协调优化与系统的快速动态响应能力,旨在提升微电网的运行稳定性、电能质量及能源利用效率。; 适合人群:具备电力电子、自动化或电气工程等相关专业背景,从事新能源发电、微电网控制、储能系统集成与优化等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入研究混合储能系统在微电网中的协调控制机制与能量管理策略;②掌握三相并网逆变器的建模、控制算法设计及Matlab/Simulink仿真方法;③实现储能系统的高效充放电管理与并网功率精确控制;④为学术论文撰写、科研课题申报、工程项目开发或实验复现提供完整的技术方案与参考实例。; 阅读建议:建议结合所提供的仿真模型、说明文档及参考文献,按照系统架构从单元控制到整体协调的顺序分模块学习,重点关注各控制策略的设计原理、参数整定方法与协同逻辑。推荐在Matlab环境中动手复现仿真,通过调整参数和工况来观察系统响应,以深化对理论知识的理解和工程应用能力的掌握。


