我有这个简单的代码,但它显示错误。我不知道我哪里错了。 我在最后一行显示错误..“DeleteOnSubmit” linq_testDataContext db = new linq_testDataContext();
var remove = from aremove in db.logins
where aremove.username == userNameString && aremove.Password == pwdString
select aremove;
db.logins.DeleteOnSubmit(remove);
答案 0 :(得分:4)
DeleteOnSubmit
只占用一个对象。您正在向其传递IEnumerable<login>
。请改用DeleteAllOnSubmit
,或从结果集合中选择一个对象,如下所示:
var remove = (from aremove in db.logins
where aremove.username == userNameString
&& aremove.Password == pwdString
select aremove).FirstOrDefault();
if(remove != null)
{
db.logins.DeleteOnSubmit(remove);
}
答案 1 :(得分:4)
你缺少foreach循环来删除所有实体。
使用如下
var remove = from aremove in db.logins
where aremove.username == userNameString && aremove.Password == pwdString
select aremove;
之后
foreach (var detail in remove)
{
db.logins.DeleteOnSubmit(detail);
}
最后
try
{
db.SubmitChanges();
}
catch (Exception e)
{
// Provide for exceptions.
}
希望这会对你有所帮助。
答案 2 :(得分:2)
而不是:
db.logins.DeleteOnSubmit(remove);
拨打DeleteAllOnSubmit()
,如下所示:
db.logins.DeleteAllOnSubmit(remove.ToList());
请务必事后致电db.SubmitChanges()
。您也可以使用.AsEnumerable()
,或者。如果它是一个大的删除操作,你可能想要考虑在这种情况下绕过LINQ。
答案 3 :(得分:0)
有关良好做法
private void DeleteCourse()
{
int id = Convert.ToInt32( txtSearch.Text);
CourseDemoDataContext cdContext = new CourseDemoDataContext();
course courseobj = cdContext.courses.Single(courses => courses.COURSE_ID == id);
cdContext.courses.DeleteOnSubmit(courseobj);
cdContext.SubmitChanges();
}
答案 4 :(得分:0)
尝试使用first()方法,如下所示:
var remove =
(from aremove in db.logins where aremove.username == userNameString
&& aremove.Password == pwdString select aremove).first();
db.logins.DeleteOnSubmit(remove);
答案 5 :(得分:0)
使用此代码进行工作
var remove = (from aremove in db.logins
where aremove.username == userNameString
&& aremove.Password == pwdString
select aremove).FirstOrDefault();
if(remove != null)
{
db.logins.Remove(remove);
db.SaveChanges();
}