为什么Linq需要一个';只读';对象属性?
我使用LINQDataContext.ExecuteQuery(“一些sql语句”)来填充对象列表为什么Linq需要一个';只读';对象属性?,linq,readonly,setter,executequery,Linq,Readonly,Setter,Executequery,我使用LINQDataContext.ExecuteQuery(“一些sql语句”)来填充对象列表 var incomes = db.ExecuteQuery<IncomeAggregate>(sqlIncomeStatement(TimeUnit)); 一切编译都正常,但当它执行Linq时,我得到以下错误: 无法将值分配给成员“YQM”。它没有定义setter 但很明显,我不想“设置”它。 Y、 Q和M由数据库的查询提供。查询未提供YQM。 我是否需要以某种方式更改对象的定义?
var incomes = db.ExecuteQuery<IncomeAggregate>(sqlIncomeStatement(TimeUnit));
一切编译都正常,但当它执行Linq时,我得到以下错误:
无法将值分配给成员“YQM”。它没有定义setter
但很明显,我不想“设置”它。
Y、 Q和M由数据库的查询提供。查询未提供YQM。
我是否需要以某种方式更改对象的定义?
(我刚刚开始使用Linq,但我仍在加快速度,所以它可能非常简单)Linq假设此对象的属性是从数据库加载的值,显然它无法设置YQM
属性,因为它没有setter。尝试将YQM改为一种方法:
public string YQM()
{
return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month);
}
好吧,我终于把二传定为私人了
public string YQM {
get
{
return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month);
}
private set { ;}
}
似乎有效。我尝试的另一个选项是只放入一个“虚拟”setter:
私有集{;}
@JacksonPope:我希望找到一种方法让Linq知道is不必从数据库加载此值。在剩下的代码中,我更喜欢使用YQM作为属性。我还注意到,当我使用分部类向LinqToSql生成的类添加属性时,该分部类中可能只有一个getter。这个问题类似于。他们找到了相同的私有集{;}
解决方案。
public string YQM {
get
{
return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month);
}
private set { ;}
}