我目前在一个支付提供商工作。我想从提供程序配置中获取事务表名称,以便在我的LINQ查询中使用,但要理解以下示例是不可能的:
[Table(Name = Config.TransactionTable)]
public class Transaction : ITransaction
{
....
}
当我执行上述操作时,在编译时得到以下错误:
属性参数必须是属性参数类型
的常量表达式、typeof表达式或数组创建表达式。
解决这个问题的最佳方法是什么?使用LINQ to SQL来实现我想要的问题?
属性(TableAttribute
)是sealed
,这限制了许多选项;然而,LINQ-to-SQL并不依赖于属性模型——还有其他的提供程序。最值得注意的是,您可能会看到使用xml模型提供程序,并在运行时生成xml。这是重载构造函数中的MappingSource
形参;典型的用法是XmlMappingSource.FromXml(...)
或类似的。
然而,核心表在运行时发生变化的情况似乎并不常见。不常见,但并非不支持。
作为参考,隐式默认值为AttributeMappingSource
。