Impossible de supprimer la base de données, car il est en cours d'utilisation + EF premier Code
Je suis nouveau à l'asp .net mvc3
Je suis en train de stocker des informations supplémentaires sur la norme asp .net fournisseur d'appartenances. J'ai créé une nouvelle entité UserAddress et je le synchroniser avec le aspnet_tables à l'aide de l'adhésion de l'API.
Cependant, maintenant, si je apporter des modifications à la UserAddress classe asp.net ne pas supprimer et recréer le modèle. Je reçois le message d'erreur
Impossible de supprimer la base de données, car il est en cours d'utilisation.
J'ai cherché sur stackoverflow et google. En gros, mon problème est similaire à ce
Base de données en cours d'utilisation d'erreur avec Entity Framework 4 le Premier Code
Cependant, je ne suis pas sûr de savoir comment mettre en œuvre ce que chris suggèrent qu'une solution:
"Ce qui se passait pour moi parce que j'étais l'appel de l'Adhésion des méthodes à l'encontre de la DB et qui a été la création d'un conflit. J'ai résolu ce problème en forçant l'initialiseur de courir et de graines avant d'utiliser le système d'Adhésion"
Je suis assez sûr que c'est la raison pour laquelle la base de données est en cours d'utilisation car mon code est plus à ce point dans le référentiel de données:
var userid = Membership.GetUser.ProviderUserKey.ToString();
return db.UserAddress.SingleOrDefault(a => a.UserId == userid);
Comment puis-je forcer l'initialiseur à exécuter avant le système d'adhésion?
Extrait de mon code est ci-dessous:
public class UserAddress
{
public int UserAddressId { get; set; }
public string UserId { get; set; }
public string FlatNo { get; set; }
public string BuildingName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string PostCode { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
public long MobilePhone { get; set; }
}
public class NPLHWebsiteDb : DbContext
{
public DbSet<UserAddress> UserAddress { get; set; }
}
public class NPLHWebsiteInitializer : DropCreateDatabaseIfModelChanges<NPLHWebsiteDb>
{
protected override void Seed(NPLHWebsiteDb context)
{
var userAddress = new List<UserAddress>
{
new UserAddress {
UserAddressId = 1,
UserId = "153",
FlatNo = "6.4",
BuildingName = "Wilton Plaza",
MobilePhone = 9810110123,
}
};
userAddress.ForEach(a => context.UserAddress.Add(a));
context.SaveChanges();
}
Grâce
OriginalL'auteur Tripping | 2012-08-08
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème avant, quand je l'ai connecté à un SqlExpress base de données en utilisant SQL Server Management studio, et avoir un couple de requêtes ouvrir quand j'ai commencé mon projet.
Si c'est ce que vous faites - essayez de déconnecter de la base de données dans SSMS avant de commencer votre projet.
Parfait - ce fait pour moi (EF 5.0)
OriginalL'auteur StanK
Comme présumé coupable a été 'Adhésion'.
Le code utilise l'adhésion pour rechercher l'adresse de l'utilisateur connecté. Donc, si je suis connecté sur le site puis mon Adhésion tables appelait et SQL ne permettrait pas à l'initalizer à supprimer et recréer le tableau tel qu'il est actuellement en cours d'utilisation (c'est à dire par l'Adhésion).
C'est exactement ce que Chris a fait dans le débordement de pile question que j'avais un lien à ma question initiale
Fondamentalement, la solution était de le forcer à la base de données de initalize avant l'Adhésion est appelé. Je n'étais pas sûr de la façon de le faire. J'ai essayé de le faire manuellement en entrant l'URL pour accéder à l'adresse de l'utilisateur de la page. Toutefois, cela ne fonctionne pas comme il a de nouveau échoué à la ligne qui appelle l'adhésion des tables.
La bonne façon de le faire était de forcer l'initialisation au démarrage de l'Application comme suit:
db.Database.Initialize(true);
au lieu de cela maintenant.OriginalL'auteur Tripping
Avez-vous votre Initialiseur dans votre Application_Start() dans votre Global.asax la première chose à se produire?
OriginalL'auteur Mark Oreta
Que fait le contrôleur de
return db.UserAddress.SingleOrDefault(a => a.UserId == userid);
ressemble.Je voudrais essayer, "
return db.UserAddress.SingleOrDefault(a => a.UserId == userid).ToList()
"Et de voir ce qui résout le problème.
OriginalL'auteur Garrett Fogerlie
Je suis en utilisant MVC 4 le premier code de l'Entité Cadre. J'ai déplacé mon adhésion à une autre base de données, ajout de Déclenchement du code de
Application_Start()
, je ne suis pas à l'aide de SSMS, déplacé le code jusqu'au début de la méthode start. Encore obtenu l'erreur, tout comme (un autre) dit Marc.Résolu en suivant https://stackoverflow.com/a/7007818/2332919 pour ajouter
Pooling=false
à ma chaîne de connexion, ce qui m'a fait aller à nouveau, mais à quel prix?OriginalL'auteur Mark