1

我创建了代表我的数据库的 LINQ to SQL 文件。数据库中的表名格式如下:

[prefix]_tableName

当我尝试将 Designer.cs 文件中的 TableAttribute 从以下位置更改时,我希望前缀是动态的:

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.isftblprfx_config")]

至:

[global::System.Data.Linq.Mapping.TableAttribute(Name=String.Format("dbo.{0}_{1}", Server.TablesPrefix, "config")]

我得到了构建时间错误:

属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式

有什么解决办法吗?提前致谢

4

2 回答 2

1

例外说明了一切。

编译代码时会将属性发送到元数据中,因此它的参数需要在编译时确定,它们不能在运行时更改。所以我希望你Server.TablesPrefix的不是常量或只读字符串。

如果你想为不同的数据库重用你的上下文,它们应该有相同的模式。如果您无法更改架构,也许 t4 模板可以提供解决方案。

于 2012-06-23T09:40:40.287 回答
0
[global::System.Data.Linq.Mapping.TableAttribute(Name=String.Fromat("dbo.{0}_{1}", Server.TablesPerfix, "config")]

应该读

[global::System.Data.Linq.Mapping.TableAttribute(Name=String.Format("dbo.{0}_{1}", Server.TablesPrefix, "config")]

错字永远是最大的敌人 :)

于 2012-06-22T11:52:37.490 回答