【问题标题】:LINQ to SQL - Dynamic Table AttributeLINQ to SQL - 动态表属性
【发布时间】:2011-04-08 06:00:05
【问题描述】:

我目前正在研究支付服务提供商。我想从 Provider 配置中获取事务表名称以用于我的 LINQ 查询,但请理解以下示例是不可能的:

[Table(Name = Config.TransactionTable)]
public class Transaction : ITransaction
{
   ....
}

执行上述操作时,在编译时出现以下错误:

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

解决这个问题的最佳方法是什么,以及使用 LINQ to SQL 来实现我想要的结果?

【问题讨论】:

    标签: c# .net asp.net linq linq-to-sql


    【解决方案1】:

    属性(TableAttribute)为sealed,限制了很多选项;但是,LINQ-to-SQL 不依赖于属性模型 - 还有其他提供程序。最值得注意的是,您可能会考虑使用 xml 模型提供程序,并在运行时生成 xml。这是重载构造函数中的MappingSource参数;一个典型的用法是XmlMappingSource.FromXml(...) 或类似的。

    但是,核心表在运行时发生变化的情况通常似乎很少见。不常见,但并非不受支持。

    作为参考,隐式默认为AttributeMappingSource

    【讨论】:

    • 表结构将保持不变,只是允许用户指定自己的表名,我需要在我的提供程序中提供更大的灵活性。我会进一步研究您建议的选项 - 谢谢。
    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多