2011-04-12 4 views
8

Je travaille dans le tutoriel Building an MVC 3 App with Code First and Entity Framework 4.1 sur MSDN et suis resté bloqué sur « Aussi par défaut, cette base de données sera une base de données SQL Express avec le nom dérivé du fortement typé Le nom du contexte et son fichier seront dans le dossier de données par défaut de SQL Express. "changement EF 4.1 Code de premier défaut DB Localisation

Si je veux changer la valeur par défaut (par exemple pour placer le fichier MDF dans mon dossier App_Data), comment le ferais-je? Je vais avoir plusieurs contextes différents (un pour chaque domaine fonctionnel majeur) et je voudrais qu'ils vivent tous dans la même base de données.

Répondre

10

Vous définissez l'emplacement de la base de données à l'aide des paramètres de connexion du fichier web.config. Il vous suffit de faire le nom du contexte = nom de votre chaîne de connexion si le vous Le contexte est MyContext vous pouvez définir l'emplacement comme ci-dessous:

<connectionStrings> 
    <clear/> 
     <add name="MyContext" 
     connectionString="Server=myServer;Database=MyDB;Uid=foo;Password=XXX; " 
     providerName="System.Data.SqlClient" 
      /> 


    </connectionStrings> 
+0

Si je veux que tous les contextes vivent dans le même DB physique, est-ce que je fournirais simplement plusieurs entrées avec les éléments 'name' appropriés et le même élément' connectionString'? –

+0

Je ne l'ai jamais essayé, mais oui ça sonne comme si ça devait marcher il va falloir faire attention à l'initialisation de votre base de données pour qu'elle n'essaye pas de laisser tomber et de créer la base de données pour chaque contexte. c'est-à-dire que vous pouvez utiliser CreateDatabaseIfNotExists au lieu de DropCreateDatabaseIfModelChanges ou DropCreateDatabaseAlways – Daveo

0

En réponse à votre deuxième question ...

"Je vais avoir plusieurs contextes différents (un pour chaque domaine fonctionnel majeur) et je voudrais qu'ils vivent tous dans la même base de données."

Pourquoi ne pas essayer ...

MyContext.cs

public partial class MyContext : DbContext 
{ 
} 

FooContext.cs

partial class MyContext 
{ 
    public DbSet<Foo> Foos { get; set; } 
} 

BarContext.cs

partial class MyContext 
{ 
    public DbSet<Bar> Bars { get; set; } 
} 

Vous finirez avec un contexte et une connexion, mais votre le code est divisé sur plusieurs fichiers. J'espère que c'est ce que vous essayez d'accomplir.

Questions connexes