Come abilitare la migrazione in sqlite usando ef




 Ho bloccato il problema. Sto scrivendo un codice per l'applicazione desktop di Windows e devo usare sqlite come database. Ho installato con successo `system.data.sqlite` e framework di entità dal pacchetto nuget. Ho anche creato la mia classe DbContext. Ora il problema è che non appena ho provato a eseguire il mio codice arriva un'eccezione il cui messaggio interno è 


>  {"Errore SQLite 1: 'nessuna tabella di questo tipo: TimeSheet'"}. 
> 
> 

 Ciò significa che la tabella TimeSheet non esiste nel database. Plz dimmi come creare una tabella in sqlite usando il framework di entità o come abilitare le migrazioni.
Esistono alcune implementazioni della migrazione per SQLite. 

 <https://github.com/bubibubi/db2ef6migrations> si basa sulla nuova interfaccia di migrazione EF6 ma presenta alcune restrizioni. È possibile scaricarlo da Nuget alla ricerca di System.Data.SQLite.EF6.Migrations
È possibile utilizzare [DataAdapter.FillSchema](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.fillschema.aspx) . Per chiunque non leggesse i commenti, la soluzione era chiamare `StateHasChanged()` al momento giusto. 

 A volte nello sviluppo del blazer questo requisito dovrebbe essere soddisfatto automaticamente dal framework. Vedi [qui](https://github.com/aspnet/Blazor/issues/699) ah, percio ssd lo faccio diventare d:. anche se ci sono file windows tipo flight simulator 2020?

se vuoi essere piu' sicuro puoi anche clonarlo (di programmi ce ne sono a bizzeffe anche free) essendo di solo data puoi farlo da windows. <p>esistono diversi metodi per ottenere un piano di esecuzione, che uno da utilizzare dipenderà dalle circostanze. in genere è possibile utilizzare sql server management studio per ottenere un piano, tuttavia se per qualche motivo non è possibile eseguire la query in sql server management studio, potrebbe essere utile essere in grado di ottenere un piano tramite sql server profiler o ispezionando la cache del piano.</p><h2>metodo 1: utilizzo di sql server management studio</h2><p>sql server è dotato di un paio di funzionalità intuitive che rendono molto semplice l'acquisizione di un piano di esecuzione, semplicemente assicurati che la voce di menu &quot;includi piano di esecuzione effettivo&quot; (presente nel menu &quot;query&quot;) sia spuntata ed esegui la query come normale .</p><p><img src="https://i.stack.imgur.com/0icgu.png" alt="include action execution plan menu item"></p><p>se si sta tentando di ottenere il piano di esecuzione per le istruzioni in una stored procedure, è necessario eseguire la stored procedure, in questo modo:</p><pre><code>exec p\_example 42 </code></pre><p>una volta completata la tua query, dovresti visualizzare una scheda aggiuntiva intitolata &quot;piano di esecuzione&quot; nel riquadro dei risultati. se hai eseguito molte affermazioni, potresti vedere molti piani visualizzati in questa scheda.</p><p><img src="https://i.stack.imgur.com/ihkoe.png" alt="screenshot of an execution plan"></p><p>da qui è possibile ispezionare il piano di esecuzione in sql server management studio oppure fare clic con il tasto destro del mouse sul piano e selezionare &quot;salva piano di esecuzione con nome ...&quot; per salvare il piano in un file in formato xml.</p><h2>metodo 2 - utilizzo delle opzioni showplan</h2><p>questo metodo è molto simile al metodo 1 (in realtà questo è ciò che sql server management studio esegue internamente), tuttavia l'ho incluso per completezza o se non è disponibile sql server management studio.</p><p>prima di eseguire la query, eseguire <strong>uno</strong>delle seguenti affermazioni. l'istruzione deve essere l'unica dichiarazione nel batch, cioè non è possibile eseguire un'altra istruzione allo stesso tempo:</p><pre><code>set showplan\_text on set showplan\_all on set showplan\_xml on set statistics profile on set statistics xml on -- the is the recommended option to use </code></pre><p>queste sono opzioni di connessione e quindi è necessario eseguirlo solo una volta per connessione. da questo punto in poi tutte le istruzioni eseguite saranno accompagnate da un <strong>set di risultati aggiuntivi</strong>contenente il piano di esecuzione nel formato desiderato - è sufficiente eseguire la query come si farebbe normalmente per vedere il piano.</p><p>una volta che hai finito puoi disattivare questa opzione con la seguente dichiarazione:</p><pre><code>set &lt;&lt;option&gt;&gt; off </code></pre><h3>confronto dei formati del piano di esecuzione</h3><p>a meno che tu non abbia una forte preferenza, la mia raccomandazione è di usare l'opzione <code>statistics xml</code>. questa opzione è equivalente all'opzione &quot;includi piano di esecuzione effettivo&quot; in sql server management studio e fornisce la maggior parte delle informazioni nel formato più conveniente.</p><ul> <li><code>showplan\_text</code>: visualizza un piano di esecuzione stimato basato sul testo base, senza eseguire la query</li> <li><code>showplan\_all</code>: visualizza un piano di esecuzione stimato basato su testo con stime dei costi, senza eseguire la query</li> <li><code>showplan\_xml</code>: visualizza un piano di esecuzione stimato basato su xml con stime dei costi, senza eseguire la query. questo è equivalente all'opzione &quot;visualizza piano di esecuzione stimato ...&quot; in sql server management studio.</li> <li><code>statistics profile</code> - esegue la query e visualizza un piano di esecuzione effettivo basato sul testo.</li> <li><code>statistics xml</code> - esegue la query e visualizza un piano di esecuzione effettivo basato su xml. ciò equivale all'opzione &quot;includi piano di esecuzione effettiva&quot; in sql server management studio.</li> </ul><h2>metodo 3 - utilizzo di sql server profiler</h2><p>se non è possibile eseguire direttamente la query (o la query non viene eseguita lentamente quando viene eseguita direttamente - ricordare che vogliamo un piano di esecuzione della query non valido), è possibile acquisire un piano utilizzando una traccia di sql server profiler. l'idea è di eseguire la tua query mentre è in esecuzione una traccia che sta catturando uno degli eventi &quot;showplan&quot;.</p><p>si noti che a seconda del carico si <strong>può</strong>utilizzare questo metodo in un ambiente di produzione, tuttavia è necessario prestare attenzione. i meccanismi di definizione dei profili di sql server sono progettati per minimizzare l'impatto sul database ma ciò non significa che non be <em>any</em> impatto sulle prestazioni.potresti anche avere problemi nel filtrare e identificare il piano corretto nella tua traccia se il tuo database è in uso intensivo. dovresti ovviamente controllare con il tuo dba per vedere se sono contenti di averlo fatto sul loro prezioso database!</p><ol> <li>aprire sql server profiler e creare una nuova traccia connettendosi al database desiderato rispetto al quale si desidera registrare la traccia.</li> <li>sotto la scheda &quot;selezione eventi&quot; seleziona &quot;mostra tutti gli eventi&quot;, controlla la riga &quot;prestazioni&quot; -&gt; &quot;showplan xml&quot; ed esegui la traccia.</li> <li>mentre la traccia è in esecuzione, fare tutto ciò che è necessario per eseguire la query a esecuzione lenta.</li> <li>attendi il completamento della query e interrompi la traccia.</li> <li>per salvare la traccia, fare clic con il pulsante destro del mouse su xml del piano in sql server profiler e selezionare &quot;estrai dati evento ...&quot; per salvare il piano in file in formato xml.</li> </ol><p>il piano che ottieni è equivalente all'opzione &quot;includi piano di esecuzione effettivo&quot; in sql server management studio.</p><h2>metodo 4 - ispezione della cache delle query</h2><p>se non è possibile eseguire direttamente la query e non è possibile acquisire una traccia di profiler, è comunque possibile ottenere un piano stimato ispezionando la cache del piano di query sql.</p><p>esaminiamo la cache del piano interrogando sql server <a href="http://msdn.microsoft.com/en-us/library/ms188754.aspx">dmvs</a> . la seguente è una query di base che elencherà tutti i piani di query memorizzati nella cache (come xml) insieme al loro testo sql. nella maggior parte dei database sarà necessario aggiungere ulteriori clausole di filtro per filtrare i risultati fino ai soli piani a cui si è interessati.</p><pre><code>select usecounts, cacheobjtype, objtype, text, query\_plan from sys.dm\_exec\_cached\_plans cross apply sys.dm\_exec\_sql\_text(plan\_handle) cross apply sys.dm\_exec\_query\_plan(plan\_handle) </code></pre><p>esegui questa query e fai clic sul piano xml per aprire il piano in una nuova finestra - fai clic con il pulsante destro e seleziona &quot;salva piano di esecuzione come ...&quot; per salvare il piano in file in formato xml.</p><h1>gli appunti:</h1><p>poiché ci sono così tanti fattori coinvolti (che vanno dalla tabella e dallo schema dell'indice fino ai dati archiviati e alle statistiche della tabella) dovresti <strong>sempre</strong>prova ad ottenere un piano di esecuzione dal database che ti interessa (normalmente quello che sta vivendo un problema di prestazioni).</p><p>non è possibile acquisire un piano di esecuzione per le stored procedure crittografate.</p><h2>piani di esecuzione &quot;effettivi&quot; o &quot;stimati&quot;</h2><p>un piano di esecuzione <em>effettivo</em> è uno in cui sql server esegue effettivamente la query, mentre un <em>stimato</em>piano di esecuzione sql server elabora ciò che <em>would</em> fa senza eseguire la query. sebbene logicamente equivalente, un piano di esecuzione reale è molto più utile in quanto contiene ulteriori dettagli e statistiche su ciò che effettivamente è accaduto durante l'esecuzione della query. questo è essenziale quando si diagnosticano problemi in cui le stime di sql server non sono attive (ad esempio quando le statistiche non sono aggiornate).</p><ul> <li> <a href="http://sqlserverpedia.com/blog/sql-server-bloggers/estimated-and-actual-execution-plan-revisited/">piano di esecuzione stimato ed effettivo rivisto</a> </li> </ul><h2>come interpreto un piano di esecuzione della query?</h2><p>questo è un argomento degno di un (gratuito) <a href="https://www.simple-talk.com/books/sql-books/sql-server-execution-plans-second-edition-by-grant-fritchey/">libro</a> a sé stante.</p><h2>guarda anche:</h2><ul> <li> <a href="http://www.simple-talk.com/sql/performance/execution-plan-basics/">basi del piano di esecuzione</a> </li> <li> <a href="http://msdn.microsoft.com/en-us/library/ms178086.aspx">showplan batch di permessi e transact-sql</a> </li> <li> <a href="http://www.dbsnaps.com/sql-server/sql-server-query-hashes/">sql server 2008 - utilizzo degli hash di query e degli hash del piano di query</a> </li> <li> <a href="http://www.mssqltips.com/sqlservertip/1661/analyzing-the-sql-server-plan-cache/">analisi di sql server plan cache</a> </li> </ul> <p>fallo con <a href="https://docs.joomla.org/sql\_form\_field\_type">tipo di campo modulo sql</a> </p><pre><code>&lt;field name="parent" type="sql" label="select parent" query="select id, name from `#\_\_records` where `parent`='0'" key\_field="id" value\_field="name"&gt; &lt;option value=""&gt;please select parent&lt;/option&gt; &lt;/field&gt; </code></pre><p>oppure <a href="https://docs.joomla.org/creating\_a\_custom\_form\_field\_type">creare un tipo di campo modulo personalizzato</a> .</p><p>con il campo modulo personalizzato, puoi mostrare i bambini sotto i genitori, come la categoria seleziona ecc. ti dà maggiore flessibilità.</p><p>sembra che tu stia facendo una cosa tipo di categoria. in tal caso, è necessario utilizzare il gestore di categorie integrato. vedi <a href="https://docs.joomla.org/j3.x:developing\_a\_mvc\_component/adding\_categories">joomla! documenti: sviluppo di un componente mvc/aggiunta di categorie</a> su come aggiungere categorie al componente personalizzato.</p> <p>il driver del database aggiungerà nuovamente il risultato alla tabella dopo il salvataggio.</p><p>quindi, qualcosa come il prossimo dovrebbe funzionare:</p><pre><code>$table = $this-&gt;gettable(); if ($table-&gt;save($data)  true) { return $table-&gt;id; } else { return false; } </code></pre> <p>ho avuto anche questo problema. ecco cosa ho fatto:</p><blockquote> <p>in excel 2003, vai su strumenti -&gt; opzioni -&gt; scheda generale.</p> <p>assicurati che l'opzione &quot;ignora altre applicazioni&quot; sia selezionata.</p> <p>in excel 2007 e 2010, fare clic sul pulsante office -&gt; opzioni di excel -&gt; avanzate.</p> <p>in generale, seleziona &quot;ignora altre applicazioni che utilizzano lo scambio dinamico di dati&quot;.</p> </blockquote><p><img src="https://i.stack.imgur.com/foqeg.png" alt="enter image description here"></p><p>non so perché questo non è integrato. fonte: <a href="http://www.lytebyte.com/2008/05/13/how-to-open-two-excel-files-side-by-side-in-separate-monitors/">http://www.lytebyte.com/2008/05/13/how-to-open-two-excel-files-side-by-side -in-monitor separati/</a> </p> <p>al livello più basso, winrt è un modello a oggetti definito a livello abi. usa com come base (quindi ogni oggetto winrt implementa <code>iunknown</code> e ricontatta), e costruisce da lì. aggiunge molti nuovi concetti rispetto a com di vecchi, molti dei quali provengono direttamente da .net - ad esempio, il modello a oggetti winrt ha delegati e gli eventi sono fatti in stile .net (con delegati e aggiungi/rimuovi abbonato metodi, uno per evento) anziché il vecchio modello com di origini e sink di eventi. tra le altre cose degne di nota, winrt ha anche interfacce parametrizzate ("generiche").</p><p>un altro grande cambiamento è che tutti i componenti winrt hanno metadati disponibili per loro, proprio come gli assembly .net. in com è una specie di quello con typelibs, ma non tutti i componenti com li avevano. per winrt, i metadati sono contenuti nei file .winmd - guarda dentro "c:\programmi (x86)\windows kits\8.0\windows metadata \" in anteprima sviluppatore. se cerchi, vedrai che in realtà sono assiemi cli senza codice, solo tabelle di metadati. puoi aprirli con ildasm, in effetti. nota, questo non significa che winrt stesso sia gestito, ma semplicemente riutilizza il formato del file.</p><p>quindi ci sono un certo numero di librerie implementate in termini di quel modello di oggetti - che definiscono le interfacce e le classi winrt. ancora una volta, guarda la cartella "windows metadata" di cui sopra per vedere cosa c'è lì; o semplicemente avvia object browser in vs e seleziona "windows 8.0" nel selettore di framework, per vedere cosa è coperto. c'è molto lì e non si occupa solo dell'interfaccia utente: ottieni anche spazi dei nomi come <code>windows.data.json</code>, o <code>windows.graphics.printing</code>, o <code>windows.networking.sockets</code>.</p><p>quindi ottieni diverse librerie, che si occupano in particolare dell'interfaccia utente, per lo più si tratta di vari spazi dei nomi in <code>windows.ui</code> o <code>windows.ui.xaml</code>. molti di loro sono molto simili agli spazi dei nomi wpf/silverlight - ad es. <code>windows.ui.xaml.controls</code> è strettamente corrispondente <code>system.windows.controls</code>; idem per <code>windows.ui.xaml.documents</code> eccetera.</p><p>ora .net ha la possibilità di fare riferimento direttamente ai componenti winrt come se fossero assembly .net. funziona diversamente dall'interoperabilità com: non hai bisogno di artefatti intermedi come gli interoperativi, devi solo <code>/r</code> un file .winmd e tutti i tipi e i relativi membri nei suoi metadati diventano visibili a te come se fossero oggetti .net. si noti che le stesse librerie winrt sono completamente native (e quindi i programmi c++ nativi che utilizzano winrt non richiedono affatto clr) - la magia per esporre tutta quella roba come gestita è all'interno del clr stesso, ed è di livello abbastanza basso. se ildasm un programma .net che fa riferimento a un .winmd, vedrai che in realtà sembra un riferimento esterno all'assemblea - non ci sono giochi di prestigio come il tipo di inserimento lì.</p><p>non è nemmeno una mappatura smussata - clr tenta di adattare i tipi di winrt ai loro equivalenti, ove possibile. quindi ad es. guid, date e uri diventano <code>system.guid</code>, <code>system.datetime</code> e <code>system.uri</code>, rispettivamente; interfacce di raccolta winrt come <code>iiterable&lt;t&gt;</code> e <code>ivector&lt;t&gt;</code> diventa <code>ienumerable&lt;t&gt;</code> e <code>ilist&lt;t&gt;</code>; e così via. questo funziona in entrambi i modi: se si dispone di un oggetto .net che implementa <code>ienumerable&lt;t&gt;</code> e restituiscilo a winrt, lo vedrà come <code>iiterable&lt;t&gt;</code>.</p><p>in definitiva, ciò significa che le tue app .net metro hanno accesso a un sottoinsieme delle librerie .net standard esistenti e anche alle librerie (native) winrt, alcune delle quali - in particolare <code>windows.ui</code> - sembra molto simile a silverlight, per quanto riguarda le api. hai ancora xaml per definire la tua ui e gestisci ancora gli stessi concetti di base di silverlight: associazioni di dati, risorse, stili, modelli ecc. in molti casi, è possibile eseguire il porting di un'app silverlight semplicemente con <code>using</code> i nuovi spazi dei nomi e modificando alcuni punti del codice in cui l'api è stata modificata.</p><p>winrt stesso non ha nulla a che fare con html e css, e ha relazione con javascript solo nel senso che è anche esposto lì, in modo simile a come viene fatto per .net. non è necessario avere a che fare con html/css/js quando si utilizzano le librerie dell'interfaccia utente winrt nella propria app .net metro (beh, immagino, se proprio lo si desidera, è possibile ospitare un controllo <code>webview</code>. .). tutte le tue competenze .net e silverlight rimangono molto rilevanti in questo modello di programmazione.</p> no non esiste software .. il problema è hardware .. mi dispiace 
ciao prova a cercare su emule dovrebbe esserci