rlc*_*ews 3 linq entity-framework
在一个项目中,我有一个包含以下列的数据库表
我希望能够从该表中删除所有具有匹配的SharingAgencyId和ReceivingAgencyId值的行,我可以传入这些值.
到目前为止我尝试了什么:
public static ICollection<SecurityDataShare> UpdateSharedEntites(long conAgency, long recAgency)
{
ICollection<SecurityDataShare> agShares = null;
try
{
using (var context = new ProjSecurityEntities(string.Empty))
{
agShares = (from a in context.SecurityDataShares
.Where(c => c.ReceivingAgencyId == recAgency && c.SharingAgencyId == conAgency)
select a);
}
}
catch (Exception ex)
{
//ToDo
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
我的思考过程是检索id与传入的参数匹配的记录,然后使用foreach循环遍历(agShare)并删除每一行,然后保存我的更改.使用当前的实现,我似乎无法访问任何Delete方法.
查看上面的示例,我很感激有关如何使用dbContext删除包含值43和39的表中的行的任何建议.
干杯
如果我理解正确,你DbContext
的属性就像SecurityDataShares
应该打字一样IDbSet<SecurityDataShare>
.如果这是正确的,您应该能够使用此Remove
方法.
foreach(var agShare in agShares) {
context.SecurityDataShares.Remove(agShare);
}
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
请注意,这会创建一个单独的SQL语句来删除这些对象.如果您希望对象的数量相当大,则可能需要使用存储过程.