我有一个数据库和一个由 O/R-Mapper 创建的实体集,所有这些都与 LINQ 一起使用。
在 O/R-Mapper 中,我需要为每个表输入一个表名(源),用于 LINQ 生成的 SQL。在 .dbml 文件中,它看起来像这样:
<Table Name="dbo.Customers" Member="Customers">
现在我想在运行时更改这个表名,所以 SQL 将针对其他一些表(例如,customers2008 而不是 customer)运行。
有没有办法在运行时更改表名(源名称)?
[更新] 经过一些令我沮丧的测试后,我不得不发现 XmlMappingSource 确实将未保留在数据库中的计算属性呈现为不可访问(是的,即使由 SqlMetal 创建的映射也忽略了所有未保留的内容)。
最佳答案
有点......你必须做这样的事情:
这是一篇博客文章,逐步解释了此过程:
http://weblogs.asp.net/guybarrette/archive/2008/07/23/linq-to-sql-dynamic-mapping.aspx
我正在对一个 ERP 数据库使用类似的过程,该数据库具有像 ttccom001xxx 这样的表名,其中 xxx 是安装 ID(我知道这是一个可怕的架构,但我对此无能为力)。我们有多个安装,所以我为每个安装复制一次初始 xml 映射,然后将 xxx 替换为安装 ID。我编写了一个使用 Regex 处理替换的小型控制台应用程序,并将其添加为我的构建过程的一部分。
关于.net - 如何在运行时更改 LINQ O/R-M 表名/源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/582221/