2010-04-30 7 views
20

Sto utilizzando EF4 con Visual Studio 2010. Ho già creato un database SQL e tutte le mie colonne sono documentate con la proprietà Description in SQL management studio. Quando creo edmx in Visual Studio, come posso farlo leggere quelle descrizioni e usarle per aggiungere commenti alle mie classi generate? So che posso utilizzare il Riepilogo e la descrizione lunga nelle proprietà edmx, ma sto cercando un modo per farlo senza dover copiare e incollare ogni descrizione.Come posso fare in modo che il progettista del modello di dati Entity utilizzi le descrizioni delle colonne del mio database?

Grazie!

+1

Dai un'occhiata a [http://eftsqldocgenerator.codeplex.com/](http://eftsqldocgenerator.codeplex.com/). Sembra che faccia il lavoro. Non l'ho provato però. – Kamyar

+1

Grazie a @kamyar. L'ho biforcato e risolto per EF5, funziona alla grande. Scarica la copia aggiornata qui: https://github.com/timabell/ef-document-generator –

+1

Ora con il link per il download https://github.com/timabell/ef-document-generator/releases/latest per salvarti compilando il tuo proprio. –

risposta

1

Non so che lo stesso progettista abbia punti di estensibilità. Tuttavia, una volta che i campi Riepilogo e LongDescription sono stati compilati nel file edmx, tali valori rimarranno lì, anche se si apportano altre modifiche o si è aggiornato nuovamente il modello dal database. A meno che non elimini una tabella e la aggiunga nuovamente, tali valori resteranno popolati.

Quindi è possibile copiarli e incollarli tutti in uno alla volta (quanti tavoli sono nel modello? Questo è più veloce di quanto si pensi), o scrivere un programma per estrarre le informazioni dal database (utilizzando SQL SMO o qualcosa del genere), e fare in modo che il programma modifichi il tuo file edmx, popolando i campi Riassunto e LongDescription (fai un backup di edmx ogni volta che provi il tuo programma - non vuoi rovinare il tuo file edmx e devi ricominciare da capo).

Se si dispone di modelli di grandi dimensioni, e se ne stanno facendo molti, scrivere un programma per farlo automaticamente vale la pena. Se hai solo pochi modelli, con non troppe tabelle, copia incolla lo è.

Si potrebbe voler pensare di inviare un feedback al team Entity Framework here. Sembra che il progettista nel risponda automaticamente nel campo della descrizione da SQL Server. Farebbe una buona richiesta di funzionalità.

5

C'è una richiesta di funzionalità per questo. Sentiti libero di aggiungere i tuoi voti per renderlo disponibile in futuro: Retrieve the SQL Descriptions in Entity-Framework feature request

Huagati ha alcuni ottimi strumenti per lavorare con EF e L2S. Una delle caratteristiche è l'aggiornamento della documentazione EF basato sul database SQL: Huagati website

Dal sito: Aggiornamento ADO.NET Entity Data Model documentazione dal database recupera tabelle e colonne descrizioni a testo libero, e le definizioni di indice da il database e aggiorna i campi della documentazione xml nel progettista EDMX con le descrizioni.

Sembra che cerchino questi campi nel database e quindi aggiornino direttamente il modello XML. Probabilmente qualcuno potrebbe creare un componente aggiuntivo VS che farebbe lo stesso senza il prezzo se questa è l'unica caratteristica che volevi. Aggiungerò questo alla mia lista di progetti "futuri" (sebbene non sembri mai trovare il tempo per questi!).

Spero che questo aiuti!

+0

Gli strumenti Huagati DBML/EDMX sono ora gratuiti – Valentin

+0

Il collegamento per la richiesta di funzionalità si trova dietro un muro di accesso e dopo aver eseguito l'accesso 404s. Ora suppongo che stiano lavorando su EF7 che è una riscrittura completa questa richiesta di funzionalità è morta. Microsoft ha sicuramente un buon modo di prendersi cura delle persone che devono usare la loro precedente grande idea. : -/ –

+0

Gli strumenti di Huagati non sembrano funzionare in VS 2015 e lo sviluppatore sembra aver perso interesse nel mantenerli. Erano strumenti commerciali, quindi gratuiti e ora abbandonati. Immagino che non ci fosse abbastanza interesse per loro. –

2

Ho cercato modi di hacking di qualcosa insieme per popolare l'edmx con i metadati dal database.

Le proprietà di riepilogo e descrizione lunga edmx sono memorizzate in elementi sotto l'elemento EntityType.

<EntityType Name="EntityName"> 
    <!-- Without this element classes are typically generated with 
     "No Metadata Documentation available." --> 
    <Documentation> 
      <Summary>Entity Summary</Summary> 
      <LongDescription>Entity Long Description</LongDescription> 
      </Documentation> 
    <Key> 
     <PropertyRef Name="Id" /> 
    </Key> 
    <Property Name="Id" Type="String" Nullable="false" MaxLength="25" Unicode="false" FixedLength="true" /> 
    <!-- Lots of other properties --> 
    </EntityType> 

La relativa sezione del file edmx la definizione del linguaggio Conservare Schema (SSDL), è stato creato da System.Data.Entity.Design.EntityStoreSchemaGenerator.GenerateStoreMetadata(). O almeno questo è il caso di EdmGen.

Vado a vedere se è possibile modificare EntityStoreSchemaGenerator.StoreItemCollection prima di essere utilizzato da EntityStoreSchemaGenerator.WriteStoreSchema (...) per generare l'XML.

Aggiornamento

Bene che era fastidioso. System.Data.Metadata.Edm.Documentation è sigillato e ha solo un costruttore interno. Entrambe le proprietà di interesse possono essere impostate solo internamente. Quindi sembra un approccio senza uscita.

Problemi correlati