linq2sql:第二次无法获取对象

时间:2011-01-03 19:44:29

标签: sql-server linq-to-sql

在我的应用程序中,从DB获取一个对象,其查询如下:

IList<MyObject> objects = GetContext()
    .GetTable()
    .Where(obj=>obj.ParentId==iParentId)
    .ToList()
    ;

从“对象”获取数据后,列表被复制到业务对象列表中。稍后我需要使用来自业务实体的新数据更新此对象。为此,我需要从数据库中获取“数据库实体”,更新它的字段并调用“SubmitChanges()”。

问题是“从DB中第二次获取”不起作用。以下查询:

MyObject objectToBeUpdated = GetContext()
    .GetTable()
    .Where(obj=>obj.Id==iObjectId)
    .SingleOrDefault()
    ;

返回null ..

Q1。为什么我在这里得到'null'?这可能导致我需要以某种方式“释放”第一个实体吗?或者我需要记住原始实体(不要再从DB中获取它)并更新它?

Q2。如何获得实体第二次?

P.S。实际上,我宁愿防止第二次获取,但是知道这里出错的原因会很好。

非常感谢。

P.S。我正在使用MSSQL 2005,VS2008,Linq2sql。

1 个答案:

答案 0 :(得分:0)

我猜它返回null becoz没有记录满足你的where子句。由于您调用SingleOrDefault(),因此返回默认对象null。相反,如果你调用Single(),你将得到一个例外。仔细检查您确实在数据库中有符合条件的记录