如何在Linq实体上延迟加载单个属性?

时间:2008-11-20 16:23:45

标签: c# linq linq-to-sql

我正在将Linq手动编码为SQL实体,并且每次加载此实体时都有一个我不想加载的大型XML列,因为它很少使用。在我搜索的任何地方,我看到Linq to SQL设计器提供了“Delay Loaded”属性,但ColumnAttribute类没有任何关于如何实现它的提示。

我收集它与System.Data.Linq.Link类有关,但我还没有找到使它工作的神奇咒语。

有没有人知道如何在手动编码的Linq to SQL C#类中实现延迟加载的属性?

1 个答案:

答案 0 :(得分:3)

我已经剖析了设计师生成的代码的结果。

步骤1:使用System.Data.Linq.Link类型创建私有成员:

private System.Data.Linq.Link<String> _columnName;

步骤2:将Column属性的Storage参数设置为此成员名称,并填写属性getter和setter:

[Column(Name = "column_name", Storage = "_columnName"...]
public String ColumnName 
{
    get
    {
        return _columnName.Value;
    }
    set
    {
        _columnName.Value = value;
    }
}