2009-09-30 6 views
0

.NET/MSSQL Serveur Question:.Net DbDataAdapter a tort clé primaire rempli datatable et je veux corriger ce

J'utilise un System.Data.SqlClient.SqlDataAdapter pour se connecter à une base de données et de lire (.Fill) une datatable d'une vue dans la base de données (sélectionnez * from v_coolview). Le problème est que la vue se compose de plusieurs tables (bien sûr) et le résultant DataTable a généralement un ensemble clé primaire (Datatable.PrimaryKey) qui se compose de la mauvaise colonne (s). Comme le comportement automatique/les algorithmes ne peuvent pas juste deviner le bon PK pour les résultats d'une vue, je veux le spécifier.

Comment puis-je faire cela?

Répondre

0

Je ne suis pas un gars .NET, mais je pense que vous devez définir la clé primaire de la première datatable (voir http://msdn.microsoft.com/en-us/library/z24kefs8(VS.80).aspx) puis remplir le tableau sans spécifier MissingSchemaAction.AddWithKey

+0

Malheureusement ce n'est pas possible, parce que j'ai besoin de lire entièrement le schéma de la base de données. la méthode devrait fonctionner avec n'importe quelle vue, ainsi elle doit déterminer la datatable elle-même. Et c'est là qu'intervient le problème. – austrianuser

+0

Eh bien, c'est vraiment en dehors du domaine de mes connaissances; Je suis plus d'un type de base de données. Nous avions l'habitude de tromper Access en devinant une clé de priamry en spécifiant un index unique sur une vue indexée. Vous voudrez peut-être essayer et voir. –

+0

une solution possible, mais avec quelques effets secondaires négatifs: influence la table de base (en interdisant l'insertion de données afin que la vue soit illégale) et ne peut pas s'appliquer aux vues qui dépendent d'autres vues. – austrianuser