2010-07-23 14 views
0

J'utilise LINQ to SQL, et je renvoie un résultat requêtable de LINQ to SQL:Est-il possible de laisser linq à sql soumettre automatiquement mes nouveaux enregistrements à la base de données?

var qry = from p in table select p; 

Je l'utiliser pour se lier à un xtragrid:

GridControl.DataSource = qry; 

Puis Si je modifier les enregistrements dans xtraGrid, j'ai juste besoin d'appeler dataContext.submitChanges() pour soumettre les changements à la base de données.

Ma question est:

Suis-je possible d'ajouter simplement de nouveaux enregistrements dans le résultat de qry, et après que je ne dois appel dataContext.submitChanges(), puis LINQ peut créer de nouveaux enregistrements automatiquement sur la base de données?

Est-ce possible? Quelqu'un peut-il me diriger dans la bonne direction? Merci d'avance!

+0

Si vous souhaitez déjà mettre les données dynamiquement dans la requête et ensuite donner cette requête à votre DataGrid. Comment votre grille devrait-elle savoir qu'il y a des changements à soumettre? – Oliver

Répondre

1

La réponse à la prise de vue serait non. Vous devez appeler la méthode Add sur la propriété de table sur votre contexte.

Quelque chose comme ceci:

var qry = from p in myDataContext.Table select p; 

GridControl.DataSource = qry; 

myDataContext.Table.Add(newRecord); // This is how to add new recrod 

dataContext.submitChanges(); 

En savoir plus ici: http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

+0

C'est ce que je ne veux pas faire ... – MemoryLeak

+0

Je sais, mais je suis assez sûr que c'est la seule façon de le faire. Pardon. –

+0

Merci beaucoup! – MemoryLeak

0

Vous savez que si vous utilisez un LinqDataSource au lieu de donner une requête à votre propriété Grid DataSource, SubmitChanges, Ajouter, supprimer & amis seront appelés automatiquement pour vous, non? Si vous avez besoin d'afficher un sous-ensemble de la table, vous pouvez toujours remplacer l'événement Selecting de LinqDataSource pour le nourrir votre propre requête.