我正在使用 asp.net mvc 4 进行编程,并且我使用的是在您选择 Internet 应用程序模板时默认创建的模板,因此它带有一个模型,即 Models 文件夹下的 AccountModels.cs,它的初始化如下所示(AccountModels.cs):
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
(...) // tables definition
但我不需要添加到默认创建的相同数据库中一些存储我的应用程序配置的表,但我不想在创建的默认文件 AccountModels.cs 中创建我的配置表,我想将它们分开以知道它们与应用程序相关配置,所以我在 Models 文件夹下创建了另一个名为 AppConfigModels.cs 的文件,其中包含这个(其中的一部分):
public class ConfigContext : DbContext
{
public ConfigContext()
: base("DefaultConnection")
{
}
public DbSet<Config1> Config1{ get; set; }
public DbSet<Config2> Config2{ get; set; }
}
(...) // tables definition
这与默认命名空间在同一个命名空间中,我希望它指向同一个数据库,因为我希望在同一个数据库中创建我的应用程序配置表。
默认情况下,如果创建了实体框架,则不会更新数据库,因此我重命名现有数据库或删除,以便再次创建实体框架(我知道如果模型更改,我可以将行为更改为实体框架更新数据库,但在这种情况下,我已经继续如解释的那样)。因此它在文件 InitializeSimpleMembershipAttribute.cs 中的 OnActionExecuting 开始并遵循:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute
{
private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Ensure ASP.NET Simple Membership is initialized only once per app start
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock); <---- HERE IT CRASHES
}
(...)
}
引发的错误是:
The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588
如何摆脱这个?我想将我的表分隔在不同的文件中,并指向具有另一个上下文的同一个数据库。