【问题标题】:Storing object as a column in LINQ将对象存储为 LINQ 中的列
【发布时间】:2011-02-20 05:01:20
【问题描述】:

我有一些从字符串构造自身的类,像这样:

CurrencyVector v = new CurrencyVector("10 WMR / 20 WMZ");

它其实是一个持有多种货币值的类,不过没多大关系。

我需要将我的 LINQ 表(在 vs 2010 设计器中)中的列类型从 String 更改为该类 CurrencyVector。

如果我这样做 - 当 LINQ 运行时尝试将 String 转换为 CurrencyVector 时(从数据库填充表时),我得到运行时错误。 添加 IConvertible 没有帮助。

我将这些列包装在属性中,但这是一种丑陋且缓慢的解决方案。 搜索互联网没有结果。

【问题讨论】:

  • 我假设您使用的是 LINQ to SQL?
  • 您可以控制数据库架构吗?数据库是 SQL Server 2005 还是 2008?如果您对这两个问题的回答都是“是”,那么您是否考虑过为 DB 列使用 .NET 托管的 UDT?有关详细信息,请参阅此 SO 答案:stackoverflow.com/questions/935315/…

标签: database linq class object store


【解决方案1】:

您始终可以扩展类并创建另一个返回对象的属性。像这样(伪代码)

public partial class MyLinqEntity {
   public CurrencyVector  CurrencyVector {
       get {
          return new CurrencyVector(this.ColumnHoldingCurrencyVector);
       }
   }

}

其中 CurrencyVector 具有在构造函数中转换字符串的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2010-12-21
    • 2012-10-08
    相关资源
    最近更新 更多