Comment spécifier le nom de la base de données dans le Code en premier?
Comment puis-je dire à EF comment nommer la base de données et où la mettre?
S'il n'y a pas de chaîne de connexion sur le Web.Config, il essaie de le mettre dans le serveur SQLEXPRESS local, mais je veux le mettre sur un serveur SQL connu et le nommer ce que je veux. Toutes les suggestions?
7 réponses
Créez une chaîne de connexion dans l'application.config / web.config avec le même nom que le contexte et L'EF utilisera cette base de données.
Comment utiliser un nom de chaîne de connexion différent avec EF
EF utilisera le nom de la base de données dans la chaîne de connexion. Lorsque vous souhaitez dissocier le nom de votre chaîne de connexion de EF, vous devez fournir votre chaîne de connexion pour le constructeur. Exemple:
public class DatabaseContext : DbContext
{
public DatabaseContext()
: base(ApplicationParameters.ConnectionStringName)
{
}
public DatabaseContext(string connectionStringName)
: base(connectionStringName)
{
}
}
Dans La 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 le web.configuration:
<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/
Vous pouvez également 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 "Votredbname" ) et ensuite passer ceci à l'appel du constructeur de base DbContext
(je vais ajouter ceci à la réponse pour fournir une réponse complète - d'excellentes réponses déjà données à ce sujet).
Vous pouvez également le définir par programme dans votre classe D'Extension DbContext
, en utilisant la propriété Database.Connection.ConnectionString
. Pour exemple:
App.configuration:
<!-- 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 sur une base de données existante, EF "code first" n'essaiera pas d'en créer automatiquement.
EF "code first" utilise une convention où les classes de contexte recherchent par défaut une chaîne de connexion portant le même nom que la classe de contexte.
Utiliser le code ef en premier avec une base de données existante
Pour référence, voici comment le faire 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