【发布时间】:2011-07-21 08:01:40
【问题描述】:
我正在使用 Linq DataContext.ExecuteQuery("some sql statement") 来填充对象列表
var incomes = db.ExecuteQuery<IncomeAggregate>(sqlIncomeStatement(TimeUnit));
IncomeAggregate 是我为保存此查询记录的结果而创建的对象。
这个对象的一个属性是YQM:
public int Year { get; set; }
public int Quarter { get; set; }
public int Month { get; set; }
public string YQM
{
get { return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month); }
}
... more properties
一切编译正常,但是当它执行 Linq 时出现以下错误:
无法为成员“YQM”赋值。它没有定义 setter。
但很明显,我不想“设置”它。 Y、Q 和 M 由查询提供给数据库。查询不提供 YQM。 我是否需要以某种方式更改对象的定义? (我刚开始使用 Linq,我还在跟上进度,所以它可能非常简单)
【问题讨论】:
-
我尝试的另一个选项是放入一个“虚拟”设置器:
private set { ;} -
@JacksonPope:我希望找到一种方法让 Linq 知道不必从数据库中加载此值。在我的其余代码中,我更喜欢使用 YQM 作为属性。
-
我还注意到,当我使用部分类向 LinqToSql 生成的类添加属性时,IS 可能在该部分类中只有一个 getter。
-
这个问题类似于this SO post。他们得出了相同的
private set { ;}解决方案。
标签: linq readonly setter executequery