获取Linq to SQL以保存到数据库

Vac*_*ano 1 c# linq-to-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();
Run Code Online (Sandbox Code Playgroud)

....

_addresses.Add(form.Item);
_dataMap.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

当我调用SubmitChanges时,数据库中没有保存任何内容.这是为什么?我错过了这一点吗?我认为使用linq to sql你只需要在你的查询结果中添加项目,然后调用SubmitChanges就可以了....显然我错过了一些东西.

如果您使用"ToList",它现在有效吗?如果没有,那么如何将东西插入集合中?(我不认为Add是IQueryable的一部分.)

RPM*_*984 6

不要用 _addresses.Add

您无法直接添加到IQueryable,您需要将其添加到实体集.

试试这个:

    _dataMap.Addresses.InsertOnSubmit(form.Item);
    _dataMap.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

当然,我无法看到什么形式.Item是,但要注意它需要与_dataMap.Addresses实体集具有相同的实体类型.

如果使用.ToList(),则没有区别.

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

您可以根据需要多次调用.InsertOnSubmit,并且.SubmitChanges会将所有这些INSERT推送到DB.

有关InsertOnSubmit的 更多信息,请点击此处.