使用linq更新 - VS2008 / C#

时间:2009-11-18 19:24:28

标签: linq

这是我的疑问:

var query = (from v in _dataContext.UserInterests
                             join u in _dataContext.Users on v.UserId equals u.UserId
                             where u.Email.Equals(EmailAddress)
                             select v);


foreach (UserInterest reg in query)
{
    reg.Promotion = "1234-24323-1212";
    //other properties

    _dataContext.SubmitChanges()
}

没有引起任何错误,但是当我查看我的数据库记录时,没有进行任何更改。 EmailAddress将成为逗号分隔值,因此上面的foreach循环

为什么上面没有抛出错误但无法更新db记录。

我得到的错误是无效的强制转换错误。 Prompotion是sql中的varchar类型

堆栈追踪:

 at System.Data.Linq.IdentityManager.StandardIdentityManager.SingleKeyManager`2.TryCreateKeyFromValues(Object[] values, V& v)
   at System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object[] keyValues)
   at System.Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType type, Object[] keyValues)
   at System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues)
   at System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance)
   at System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
   at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
   at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
   at System.Data.Linq.DataContext.SubmitChanges()

1 个答案:

答案 0 :(得分:1)

UserInterests对象上是否有关键字段? 还要检查这些:

Debugging LINQ to SQL SubmitChanges()

http://forums.asp.net/p/1223080/2187580.aspx