Я очень новичок в linq для sql, и я не уверен, как фактически удалить запись.
Итак, я смотрел этот учебник
http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx
Итак, для обновления они имеют
NorthwindDataContext db = new NorthwindDataContext();
Product product = db.Products.Single(p => p.ProductName == "Toy 1");
product.UnitPrice == 99;
product.UnitsInStock = 5;
db.SubmitChanges();
Для удаления они имеют
NorthwindDataContext db = new NorthwindDataContext();
var toyProducts = from p in db.Producsts
where p.ProductName.Contains("Toy")
select p;
db.Products.RemoveAll(toyProducts);
db.SubmitChanges();
Так что я должен каждый раз запрашивать, чтобы записать запись, чтобы удалить эту запись? Как я могу видеть, как сделать это с обновлением, так как вам нужно предоставить ему запись, которая сначала обновляется, а затем вносить изменения, поэтому я понимаю часть запроса, но не с удалением.
Как вы не можете просто отправить то, что хотите удалить, и оно идет и удаляет его? почему вы должны сначала получить его, а затем сказать, что его нужно удалить?
Это не 2 обращения к базе данных?
Также у меня есть отношения с внешним ключом, которые я пытаюсь найти. Итак, у меня есть это
public ViewResult(string param1, string param2)
{
Table A = new Table A
A.Field1 = param1;
A.Field2 = param2;
Delete(A);
}
private void Delete(Table A)
{
DbContext.A.DeleteAllOnsubmit(A.TableB);
DbContext.A.DeleteAllOnSubmit(A.TableC);
DbContext.A.DeleteOnSubmit(A);
}
Таким образом, это не удается с этим сообщением "Не удается удалить объект, который не был присоединен".
Итак, я могу понять, почему первые две строки потерпят неудачу в методе удаления, поскольку я создал новый объект, и они ничего не имеют в объекте, который имеет какую-либо информацию о TableB и TableC.
Однако я не могу понять, почему последняя строка все еще не работает, даже если две другие строки там не там.
Как и я думал, что это сработает, мне понадобится мой объект класса "Таблица", в который я прошел, и просмотрев таблицу для этой информации, содержащейся в нем. Однако это не так.
Итак, сначала я должен извлечь информацию, а затем выполнить запрос, чтобы получить ее, а затем удалить ее, как в примере?
Также в чем разница между removeAll() и сказать DeleteAllOnSubmit().
Как я уже сказал, я новичок в linq для sql и не смог сесть и прочитать книгу по этому поводу из-за ограничений по времени. Как только у меня будет больше времени, я, вероятно, прочитаю книгу.
Спасибо