Comment dire à EF comment nommer la base de données et où la placer?
S'il n'y a pas de chaîne de connexion dans Web.Config, il essaie de le placer dans le serveur SQLEXPRESS local, mais je souhaite le placer sur un serveur SQL connu et le nommer comme je le souhaite. Aucune suggestion?
Créez une chaîne de connexion dans app.config/web.config avec le même nom que le contexte et l'EF utilisera cette base de données.
EF utilisera le nom de la base de données dans la chaîne de connexion. Lorsque vous souhaitez découpler le nom de votre chaîne de connexion de EF, vous devez fournir votre chaîne de connexion au constructeur. Exemple:
public class DatabaseContext : DbContext
{
public DatabaseContext()
: base(ApplicationParameters.ConnectionStringName)
{
}
public DatabaseContext(string connectionStringName)
: base(connectionStringName)
{
}
}
en classe :
public class Context : DbContext
{
//SET CONNECTION STRING NAME FOR DataBase Name :
public Context() : base("YourConnectionName") { }
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
dans web.config:
<connectionStrings>
<add name="YourConnectionName" connectionString="Data Source=A-PC\SQLEXPRESS;
Initial Catalog=MyDataBase; Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Merci ferventcoder.
Ref => http://brandonclapp.com/connection-strings-with-entity-framework-5-code-first/
Sinon, vous pouvez définir le nom dans votre constructeur DbContext.
Comme déjà mentionné, vous pouvez déclarer votre chaîne de connexion dans le fichier de configuration de votre application avec un nom (disons "YourDBName"), puis la transmettre à l'appel de constructeur DbContext
(je l'ajouterai à la réponse fournissant une réponse complète - bonnes réponses déjà données à ce sujet).
Sinon, vous pouvez définir ceci par programme dans votre classe d'extension DbContext
, à l'aide de la propriété Database.Connection.ConnectionString
. Par exemple:
App.config:
<!-- More.... -->
<!-- You can do this in a declarative way -->
<connectionStrings>
<add name="YourDBName"
connectionString="<Your connection string here>"
providerName="<Your provider here>" />
</connectionStrings>
<!-- More.... -->
DatabaseContext.cs:
public class DatabaseContext : DbContext
//Link it with your config file
public DatabaseContext () : base("YourDBName")
{
//And/Or you can do this programmatically.
this.Database.Connection.ConnectionString = "<Your Connection String Here>";
// More Stuff.....
}
}
Si vous pointez votre chaîne de connexion vers une base de données existante, EF “Code first” n'essaiera pas d'en créer une automatiquement.
EF “code first” utilise une convention selon laquelle les classes de contexte recherchent par défaut une chaîne de connexion qui porte le même nom que la classe de contexte.
Utiliser d'abord le code ef avec une base de données existante
Pour référence, voici comment procéder dans le code en utilisant VB.NET:
Public Class DatabaseContext : Inherits DbContext
Public Property Users As DbSet(Of User)
Public Sub New()
MyBase.New("NewFileName.sdf")
End Sub
Classe de fin