加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – 如何在运行时更改LINQ O / R-M表名/源?

发布时间:2020-12-12 08:56:24 所属栏目:MsSql教程 来源:网络整理
导读:我有一个数据库,一个由O / R-Mapper创建的实体集,使用LINQ的所有这些. 在O / R-Mapper中,我需要为每个表输入一个表名(source),该表用于LINQ生成的SQL.在.dbml文件中,它看起来像这样: Table Name="dbo.Customers" Member="Customers" 现在我想在运行时更改此
我有一个数据库,一个由O / R-Mapper创建的实体集,使用LINQ的所有这些.

在O / R-Mapper中,我需要为每个表输入一个表名(source),该表用于LINQ生成的SQL.在.dbml文件中,它看起来像这样:

<Table Name="dbo.Customers" Member="Customers">

现在我想在运行时更改此表名,因此SQL将针对其他表运行(例如,customers2008而不是客户).

有没有办法在运行时更改表名(源名称)?

[更新]经过一些测试让我感到沮丧之后,我不得不发现XmlMappingSource确实渲染了数据库中没有持久存储的计算属性(是的,即使是SqlMetal创建的映射也会忽略未持久化的所有内容).

解决方法

有点……你必须做这样的事情:

>在设计器中创建实体.
>使用SqlMetal从设计器生成的.dbml文件生成xml映射文件.
>更新xml文件中的表名.
>然后在您的代码中,使用DataContext构造函数重载,该重载接受使用xml映射文件创建的XmlMappingSource.

这是一篇博客文章,逐步解释了这个过程:
http://weblogs.asp.net/guybarrette/archive/2008/07/23/linq-to-sql-dynamic-mapping.aspx

我正在使用一个类似于ERP数据库的过程,该数据库的表名如ttccom001xxx,其中xxx是安装ID(我知道这是一个可怕的架构,但我无能为力).我们有多个安装,因此我为每个安装复制一次初始xml映射,然后用安装ID替换xxx.我写了一个小型控制台应用程序,它使用Regex来处理替换并将其作为构建过程的一部分添加.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读