Ho creato una libreria di classi C # con 3 classi di entità e un DbContext per la generazione di database in codice. Tutto è andato bene con la versione 1. Ho creato una libreria di test separata e la libreria di classi con la classe DbContext si è comportata come previsto.
Ora, volevo rendere obbligatorio uno dei campi e seguendo le convenzioni del codice, ho aggiunto un attributo [Required] alla proprietà nella classe entity. Il passo successivo è stato quello di abilitare le migrazioni.
Sono passato alla console di Gestione pacchetti, inserito "enable-migrations" e ... bang ... " Impossibile caricare la risorsa di metadati specificata ".
Per riferimento, la mia classe DbContext include:
public OrganisationsContext()
: base("Leegz_Entities_Organisations")
{
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
}
public DbSet<Organisation> Organisations { get; set; }
public DbSet<Member> Members { get; set; }
public DbSet<LeegzUser> LeegzUsers { get; set; }
e il mio app.config contiene:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="Leegz_Entities_Organisations" connectionString="data source=NEIL-INSPIRON\NEILDEV;initial catalog=TheLeegz;integrated security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="Leegz.Entities.Organisations.DbSecuritySchema" value="Leegz.Entities.Organisations"/>
</appSettings>
</configuration>
Ho visto un numero di thread su questo argomento, ma sembrano tutti parlare di errori negli elementi di riferimento del file del modello EDMX. Tuttavia, poiché ho usato il codice prima, non ho un modello (forse mi manca un passaggio qui), quindi il consiglio che ho visto in relazione alle informazioni EDMX nella stringa di connessione non sembra per applicare a me.
Qualche idea, per favore?
Ho avuto un problema simile ma con un risultato diverso. Poiché ci sono volute troppe ore per eseguire il debug, ecco alcuni suggerimenti.
Enable-Migrations
e dovrebbe funzionare correttamente. Modello primo esempio di stringa di connessione:
<add name="MyContext"
connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=MY_DB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
Esempio di prima stringa di connessione del codice:
<add name="MyContext"
connectionString="Data Source=.;Initial Catalog=MY_DB;Integrated Security=True;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient"/>