Je suis très nouveau à linq à sql et je ne suis pas sûr de savoir comment supprimer un enregistrement.Comment supprimer linq en sql?
Je regardé ce tutoriel
http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx
Donc, pour mise à jour, ils ont
NorthwindDataContext db = new NorthwindDataContext();
Product product = db.Products.Single(p => p.ProductName == "Toy 1");
product.UnitPrice == 99;
product.UnitsInStock = 5;
db.SubmitChanges();
Pour supprimer, ils ont
NorthwindDataContext db = new NorthwindDataContext();
var toyProducts = from p in db.Producsts
where p.ProductName.Contains("Toy")
select p;
db.Products.RemoveAll(toyProducts);
db.SubmitChanges();
Alors dois-je interroger tous les temps, pour obtenir l'enregistrement afin de supprimer cet enregistrement? Comme je peux le voir en faisant cela avec mise à jour puisque vous avez besoin de lui donner un enregistrement à mettre à jour en premier et ensuite faire les changements afin que je comprenne la partie interrogative mais pas avec supprimer.
Comme vous ne pouvez pas simplement envoyer ce que vous voulez supprimer et il va et supprime? Pourquoi avez-vous d'abord l'obtenir et ensuite dire qu'il soit supprimé?
N'est-ce pas 2 accès à la base de données?
J'ai aussi une relation de clé étrangère que j'essaie de mettre au travail. J'ai donc ce
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);
}
Donc, cela ne fonctionne pas, il arrive avec ce message « Impossible de supprimer une entité qui n'a pas été fixé. »
Donc je peux voir pourquoi les 2 premières lignes échoueraient dans la méthode delete, puisque j'ai fait un nouvel objet et leur rien dans l'objet qui a des informations sur TableB et TableC.
Je ne vois pas pourquoi la dernière ligne échoue encore, même si les 2 autres lignes ne sont pas là. Comme je pensais que cela fonctionnerait, il faudrait que mon objet de classe Table A passe et que je consulte la table pour trouver les informations qui s'y trouvent. Cela ne semble pas être le cas cependant.
Alors, est-ce que je dois d'abord retirer l'information, puis faire une requête pour l'obtenir et ensuite la supprimer, comme dans l'exemple?
Aussi quelle est la différence entre removeAll() et dire DeleteAllOnSubmit(). Comme je l'ai dit, je suis nouveau à linq to sql et je n'ai pas pu m'asseoir et lire un livre dessus à cause des contraintes de temps. Une fois que j'aurai plus de temps, je lirai probablement un livre.
Merci
J'ai essayé ceci mais il semble essayer d'utiliser toutes les valeurs sur l'objet pour localiser l'enregistrement. Il erreurs avec Row non trouvé ou a été changé. Des idées? – drizzie
@drizzie - Avez-vous seulement mis la clé dans votre instance d'entité? –
Oui, mon code est identique au vôtre. – drizzie