我创建了代表我的数据库的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表达式或数组创建表达式
有什么解决方案吗? 提前致谢
答案 0 :(得分:1)
例外说明了一切。
An attribute is emitted into metadata when you compile your code,因此它的参数需要在编译时确定,它们不能在运行时更改。所以我希望你的Server.TablesPrefix
不是常量或只读字符串。
如果要将上下文重用于不同的数据库,则它们应具有相同的模式。如果您无法更改模式,那么t4模板可能会提供解决方案。
答案 1 :(得分: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")]
错字总是最大的敌人:)。