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?

52
demandé sur user2864740 2011-03-18 03:52:01

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.

53
répondu amit_g 2017-03-22 02:24:06

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)
    {
    }

}
23
répondu ferventcoder 2012-03-07 20:48:43

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/

17
répondu Amin Ghaderi 2014-05-12 19:28:59

Vous pouvez également définir le nom dans votre constructeur DbContext.

7
répondu carlsb3rg 2011-03-25 17:42:36

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.....
    }
}
3
répondu Nick Louloudakis 2017-02-02 18:09:14

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

1
répondu Daniel Little 2011-03-18 00:56:50

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

0
répondu M Granja 2015-03-26 12:53:29