Domanda

OK, quindi ho ancora voglia di utilizzare il modello schema da EF 4.0, , ma voglio anche l'API e la flessibilità di EF 4.1.

Quindi, nella mia applicazione, ho aggiunto la generazione di codice DbContext dal mio EF attuali modelli 4.0.

Ora, la mia domanda è che cosa sono le opzioni per validare il mio modelli DbSet (EF 4.1) senza ottenere spazzato via?

DataAnnotation non sembra tagliare, perché ogni volta che aggiorno il mio modello visivo, si pulisce COMPLETO fuori tutte le mie modifiche.

  • Ho sentito parlare di classi parziali, ma che sembra essere davvero disordinato.
  • Non voglio veramente fare convalide sul mio controller.
  • Voglio fare questo scalabile in modo da poter facilmente trasferire le mie lezioni da asp.net MVC a WPF ed ecc.

C'è un modo per fare questo? repository di convalida? strato di convalida separato? Convalida all'interno degli strati del repository? Esempi sarebbe apprezzato troppo.

Please help me. Grazie:)

È stato utile?

Soluzione

utilizzando un generatore di modello, sembra possibile effettuare una delle operazioni seguenti:

  1. creare una classe di amici per ciascuno dei vostri entità, e definire la classe compagno dalla convenzione di denominazione del modello.
  2. Figure un modo di generazione delle annotazioni di dati, memorizzandoli in una sorgente separata o qualcosa.

In alternativa, usare un livello separato. Se si sta utilizzando i repository, si potrebbe incorporare la convalida lì. Ho scelto di avere una fabbrica di Orm di convalida, che tira in regole di corrispondenza un soggetto (in modo statico o dinamico), e la fabbrica fa il lavoro (dato che è più lungo le linee di principio responsabilità singolare).

HTH.

Altri suggerimenti

Nel mio progetto ho mescolare entrambi i 4.1 e 4.0 contesti. E 'possibile fare una migrazione lenta. C'è anche un quadro un'entità 4.1 estensione reverse engineering che può essere aggiunto a Visual Studio. (Per consentire di utilizzare 4,1 per codice di generazione di oggetti Poco + mappature dal database esistente).

non mi consiglia la creazione di un DbContext che espone EDMX modelli generati da 4,0. È inoltre perde i vantaggi di ereditare ObjectContext / DbContext, ereditando proprietà (versioni delle righe, ect), e controllare l'oggetto poco (non il codice generato in modo da non dovete preoccuparvi di parziali + attributo metadatatype come in 4.0)

La tua domanda relativa a convalidare lo schema creato con ef4.0:

In modo che le annotazioni i dati non sono completamente cancellati durante l'aggiornamento il vostro modello è necessario utilizzare l'attributo MetadataType.

http://msdn.microsoft.com/ it-it / library / system.componentmodel.dataannotations.metadatatypeattribute.aspx

che ha un esempio

Non so il motivo per cui MS insegna programmatori tali cattive pratiche. Soprattutto utilizzando le annotazioni di dati per la mappatura in EF 4.1 è stata scelta progettuale veramente stupido (per esempio LINQ to SQL utilizzato attributi separati impostati per rendere chiara separazione tra la mappatura e la validazione).

annotazioni di dati vengono utilizzati per i dati Convalida dal input dell'utente e l'input dell'utente è roba vista / regolatore correlati dove ogni vista può avere bisogno di regole di validazione diverse => se si desidera utilizzare le annotazioni di dati queste regole appartiene alla vista del modello di non entità.

Nei casi più semplici, dove vista e l'entità è di 1: 1 è possibile utilizzare le annotazioni di dati direttamente, ma che è in realtà per le applicazioni più semplici e una volta che fate una semplice applicazione come si può probabilmente utilizzare i dati di ASP.NET Dynamic direttamente e lasciare quadro creare tutte le pagine per voi in base al modello entità.

I dati ASP.NET Dynamic inoltre mostra come applicare le annotazioni di dati per le entità generate in classi compagno .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top