在LINQ中设置来自Guid的UniqueIdentifier,Null引用异常

时间:2009-09-27 14:59:03

标签: c# linq guid uniqueidentifier

我正在尝试从我的会员表(asp.net会员资格)中的唯一标识符设置我的客户表中的唯一标识符。

但是这样做时我得到一个空引用异常。这是代码。

 Customer customer = db.Customers.SingleOrDefault(c => c.Id == Convert.ToInt32(formValues["CustomerId"]));
 Guid userId = new Guid(user.ProviderUserKey.ToString());
 customer.UserId = userId;

它在最后一行崩溃。

我在数据库和LINQ to SQL模型的Customer表中尝试了不同的设置,但我不断得到它。

任何人都知道为什么?

由于

1 个答案:

答案 0 :(得分:2)

你看到这个是因为这个表达式:

db.Customers.SingleOrDefault(
    c => c.Id == Convert.ToInt32(formValues["CustomerId"]));

正在返回null,并且null被分配给customer变量。当您使用customer两行后,它会抛出NullReferenceException

这里要做的最好的事情是调试此代码并查看formValues["CustomerId"]设置的内容 - 很可能这个值是而不是设置,这会导致您查找客户不存在的CustomerId的数据库。