Ho bisogno di alcuni consigli di esperti su set di dati fortemente digitati in ADO.NET generati da Visual Studio. Ecco i dettagli. Grazie in anticipo.Domanda su come utilizzare il set di dati fortemente tipizzato nell'applicazione N-tier per .NET
voglio scrivere un applicazione N-tier in cui livello di presentazione è in C# forme/Windows, business Layer è un servizio Web e Data Access Layer è SQL db.
Quindi, ho utilizzato Visual Studio 2005 per questo e ho creato 3 progetti in una soluzione.
progetto 1 è il livello di accesso ai dati. In questo ho utilizzato il generatore di set di dati dello studio visivo per creare un set di dati e un adattatore di tabella fortemente tipizzati (per testare l'ho creato sulla tabella dei clienti in northwind). Il set di dati è denominato NorthWindDataSet e la tabella all'interno è CustomersTable.
progetto 2 ha il servizio Web che espone solo 1 metodo che è GetCustomersDataSet. Questo utilizza l'adattatore da tavolo della libreria project1 per riempire il set di dati e restituirlo al chiamante. Per poter utilizzare NorthWindDataSet e l'adattatore da tavolo, ho aggiunto un riferimento al progetto 1.
il progetto 3 è un'app di moduli di vincita e questo utilizza il servizio Web come riferimento e chiama tale servizio per ottenere il set di dati .
Nel processo di creazione di questa applicazione, nel PL, ho aggiunto un riferimento al DataSet generato sopra nel progetto 1 e del carico di forma chiamo il servizio web e assegnare il DataSet ricevuto dal servizio web a questo set di dati. Ma ottengo l'errore:
Cannot implicitly convert type 'PL.WebServiceLayerReference.NorthwindDataSet' to 'BL.NorthwindDataSet' e:\My Documents\Visual Studio 2008\Projects\DataSetWebServiceExample\PL\Form1.cs
Entrambi i set di dati sono gli stessi, ma perché ho aggiunto riferimenti da luoghi diversi, sto ottenendo l'errore precedente penso.
Quindi, ciò che ho fatto è stato aggiungere un riferimento al progetto 1 (che definisce il set di dati) al progetto 3 (l'interfaccia utente) e utilizzato il servizio Web per ottenere il DataSet e l'assegnazione al tipo corretto, ora quando il il progetto 3 (che ha il modulo web) viene eseguito, ottengo l'eccezione di runtime di sotto.
System.InvalidOperationException: There is an error in XML document (1, 5058). ---> System.Xml.Schema.XmlSchemaException: Multiple definition of element ' http://tempuri.org/NorthwindDataSet.xsd:Customers ' causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.
Penso che questo potrebbe essere a causa di alcuni errori di riferimento incrociato.
La mia domanda è, c'è un modo per utilizzare i DataSet generati dallo studio visivo in modo tale che io possa utilizzare lo stesso DataSet in tutti i livelli (per riutilizzarli) ma separare la logica della scheda di tabella al livello di accesso ai dati in modo che il front end è astratto da tutto ciò dal servizio web?
Se devo scrivere a mano il codice che ho sciolto la bontà dei dati gruppo elettrogeno dà e anche se ci sono colonne aggiunte più tardi ho bisogno di aggiungere a mano, ecc in modo che voglio utilizzare la procedura guidata di Visual Studio, per quanto possibile.
Grazie. Dove posso saperne di più sugli argomenti che hai menzionato sopra? Inoltre, questo è un progetto legacy, quindi puntare a spostare il codice esistente (big code base) a un nuovo paradigma potrebbe essere d'aiuto, ma potrei non avere molta flessibilità nello spostamento ... –
Ho aggiunto collegamenti al mio commento – vittore
grazie per il vostro puntatori! –