Я очень плохо знаком с linq to 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);
}
Таким образом, это терпит неудачу, появляется сообщение «Невозможно удалить объект, который не был присоединен».
Итак, я могу понять, почему первые 2 строки потерпели неудачу в методе удаления, так как я создал новый объект, а их нет в объекте, который имеет какую-либо информацию о TableB и TableC.
Я, однако, не понимаю, почему последняя строка по-прежнему не работает, даже если 2 других строки там нет.
То, как я думал, что это сработает, возьмет мой объект класса Table A, который я передал, и просмотрит таблицу на предмет содержащейся в нем информации. Похоже, это не так.
Так что мне сначала нужно извлечь информацию, а затем выполнить запрос, чтобы получить ее, а затем удалить, как в примере?
Также, в чем разница между removeAll () и скажем DeleteAllOnSubmit ().
Как я уже сказал, я новичок в linq to sql и не смог сесть и почитать книгу об этом из-за нехватки времени. Когда у меня будет больше времени, я, наверное, прочитаю книгу.
Спасибо