J'ai récemment commencé à utiliser Entity Framework migrations et a remarqué que le nom de base de données n'est pas en tirant à travers, pour moi, quand je lance l' Update-Database
commande.
Mon connectionstring est:
<connectionStrings>
<add name="DataContext" connectionString="Server=.\SQLEXPRESS;Initial Catalog=TestDB;Trusted_Connection=Yes;" providerName="System.Data.SqlClient" />
</connectionStrings>
La première fois que je lance la mise à Jour de la Base de données de ma base de données est créée avec le nom TestDB. Cependant, dès que je fais un changement à l'une de mes entités, il ne sera pas de mise à jour de plus pour moi, si j'ajoute un Projet de Démarrage de Nom (je suis en utilisant un multi solution de projet):
Update-Database -StartUpProjectName "TestDB.Data"
Ceci permet alors une autre nouvelle base de données dont les migrations sont toujours continuer à l'utiliser. Je ne me dérange pas d'avoir à le mettre dans la StartUpProjectName commande mais est-il un moyen de remplacer le nom par défaut de la base de données de ce produit? Il crée toujours la base de données
TestDB.Data.DataContext
Est-il un moyen de s'assurer que la base de données créée lors du passage de la StartUpProject nom est juste appelé TestDB ou est-ce une limitation de l'utilisation de la StartUpProjectName paramètre?
Comme une note, je pense que la raison j'ai besoin de spécifier le StartUpProjectName est que j'ai une multicouche de configuration de projet. Les Migrations fichier de Configuration est dans mes "Données" du projet, les entités ou les modèles sont dans mon "Domaine" du projet, etc. Je fais aussi pas d'initialiser les options dans mon Global.asax.cs fichier que je l'aurais utilisé précédemment sur le premier code ef 4.2. Donc, dans mon projet j'ai juste un DataContext dans mon projet de Données et les Migrations de Configuration dans ce projet également.
EDIT:
Depuis que j'ai à l'origine de l'installation à cette question, je suis tombé sur la "bonne" façon de nommer une base de données dans une solution multiprojet. Si la réponse ci-dessous, vous sont dupliquer votre site web.config dans un autre domaine qui n'est pas une solution idéale. Au lieu de cela, vous pouvez simplement mettre le nom de votre DbContext en faisant quelque chose comme ceci (DataContext est juste le nom que j'ai utilisé dans mon projet):
public class DataContext : DbContext
{
public DataContext() : base("DatabaseNameHere")
{ }
public DbSet<Table1> Table1 { get; set; }
public DbSet<Table2> Table2 { get; set; }
public virtual void Commit()
{
base.SaveChanges();
}
}
Merci,
Riche