2010-09-21 46 views
1

所以我有以下代码:获取LINQ到SQL保存到数据库

// Get the current user 
_currentUser = WindowsIdentity.GetCurrent(); 

// Get the list of address for the current user 
_dataMap = new DataMapDataContext(); 
_addresses = _dataMap.Addresses 
     .Where(address => address.InsertUserName == _currentUser.Name).ToList(); 

....

_addresses.Add(form.Item); 
_dataMap.SubmitChanges(); 

当我打电话的SubmitChanges没有被保存在数据库中。这是为什么?我错过了这一点吗?我认为与LINQ到SQL你可以只添加项目到您的查询结果,然后调用SubmitChanges,它会工作....显然我失去了一些东西。

如果您使用“ToList”,它现在可以工作吗?如果没有,那么你如何将东西插入到集合中? (我不认为加入是IQueryable的一部分。)

回答

6

不使用_addresses.Add

你不能直接添加到一个IQueryable,你需要将其添加到实体集。

试试这个:

_dataMap.Addresses.InsertOnSubmit(form.Item); 
    _dataMap.SubmitChanges(); 

当然,我什么也看不见form.Item是,但要注意它需要相同的实体类型为_dataMap.Addresses实体组。

如果使用.ToList(),则没有区别。使用LINQ-SQL(除非您使用某种POCO映射),您无法将项目添加到集合/查询中,您需要将该项目直接添加到指定数据上下文的实体集合中。

您可以拨打.InsertOnSubmit多次,只要你喜欢,并.SubmitChanges将推动所有这些INSERT对数据库为您服务。

有关更多信息,请参阅InsertOnSubmithere