我正在尝试使用从LinqToSQL语句中检索到的项目列表来填充数据网格,这对我来说会引起一些混乱。
当我明确地将where子句设置为等于硬编码整数时,返回列表时没有任何问题。但是,当我使用具有包含相同整数的属性的对象时,将返回列表但不填充数据网格。
正在返回的列表,我假设私有和公共属性。硬编码的整数返回列表包含所有属性,而具有属性返回列表的对象仅包含私有属性,而公共属性则声明“由于先前的函数评估超时而禁用了函数评估”
Example:
object.country _countryid _continentid _countryname CountryID ContinentID CountryName
以下是两个LinqToSQL语句(两者都返回一个项目列表,但只有一个没有抛出错误):
使用LinqToSQL语句
protected void rgcountry_NeedDataSource(object sender, EventArgs e)
{
List<db_entity.country> _clist;
using (db_era.era_entities _ee = new db_era.era_entities())
{
_clist = (from a in _ee.countries where a.ContinentID == 4 select a).ToList();
}
if (_clist.Count > 0)
this.rgcountry.DataSource = _clist;
else
this.rgcountry.DataSource = empty();
}
非工作LinqToSQL语句 - (设置了continentselected,continentID确实有值)
protected void rgcountry_NeedDataSource(object sender, EventArgs e)
{
List<db_entity.country> _clist;
if (continentselected != null)
{
using (db_era.era_entities _ee = new db_era.era_entities())
{
_clist = (from a in _ee.countries where a.ContinentID == continentselected.ContinentID select a).ToList();
}
if (_clist.Count > 0)
this.rgcountry.DataSource = _clist;
else
this.rgcountry.DataSource = empty();
}
else
this.rgcountry.DataSource = empty();
}
我在这里缺少什么?或者这就是LinqToSQL的工作方式?
答案 0 :(得分:0)
问题如下。使用不同的数据上下文检索 continentselected 。您可以通过
为查询创建新的数据上下文using (db_era.era_entities _ee = new db_era.era_entities())
和 continentselected 并不属于该上下文。 Linq to sql不会对来自不同数据上下文的实体执行操作。对于您的查询,请使用您用于检索 continentselected 实体实例的相同数据上下文