2013-01-06 13 views
16

Sto usando Entity Framework 5.0 per il mio progetto. Ho guardato su internet e ho visto che per il contesto dei dati della struttura dell'entità c'era un altro costruttore che aveva un parametro stringa per la stringa di connessione.Nessun costruttore con una stringa di connessione in Entity Framework datacontext

Sul mio generato data context non ho un tale costruttore. Ho guardato nella base DbContext e ha un tale costruttore.

Il codice è stato generato in modo errato? Ho generato il codice da un database. Questa potrebbe essere la causa?

Si scopre che posso modificare il file modello di generazione del codice per aggiungere il nuovo costruttore. Ora ho aggiunto il nuovo costruttore. Il file è un file MyDataContext.tt sotto il modello edmx. Lì hai il codice C# mescolato con il codice del modello. Puoi copiare il costruttore senza argomenti da lì e incollarlo sotto. Quindi puoi cambiarlo e aggiungere un argomento stringa ad esso e passare tale argomento al costruttore DbContext come questo: base (myString).

+1

Puoi pubblicare i codici per rendere più chiara la differenza ..? –

+0

Che cosa ti impedisce di aggiungerlo manualmente? –

+0

Inoltre, DbContext è "Code-First". Se si dispone di un database esistente, l'utilizzo tipico è "Database-First". –

risposta

22

È possibile aggiungerne uno secondo necessità.

Controllare il file generato e aggiungere un costruttore sovraccarico.

public YourContext(string connectionStr) 
     : base(connectionStr) 
    { 


    } 

Probabilmente è meglio definirlo in una classe parziale, poiché ogni generazione richiederà di aggiungerla manualmente ogni volta.

+0

Credo di poter anche modificare il file .tt ma non so se questo file sia anch'esso generato da un autogenerazione. – Alecu

+1

testato e modificato il file .tt aggiungendo un nuovo costruttore in esso. funziona ora – Alecu

+1

@ Alecu: Ho avuto lo stesso problema e ho fatto la stessa cosa: buono a sapersi! – sthiers

Problemi correlati