代码第一个数据库生成外部dll
本文关键字:外部 dll 第一个 数据库 代码 | 更新日期: 2023-09-27 18:20:25
每次运行应用程序时,我都试图首先使用代码生成数据库并对其进行种子设置,但我收到了以下错误:
无法附加文件"C:{filepath}''Application''App_Data''mydatabase.mdf"作为数据库'mydatabase'。
我尝试过"更新数据库"(根据其他问题的建议),但没有生成.mdf文件。
这是使用的连接字符串:
数据Source=(LocalDb)''v11.0;AttachDbFilename=| DataDirectory | ''mydatabase.mdf;最初的Catalog=mydatabase;集成安全=真正的
作为一些背景信息,我有两个不同的项目,它们位于不同的解决方案中:
- 应用程序
- 域
"应用程序"项目引用了"域"项目
在领域项目中,我创建了我的代码优先模型和dbContext:
public class ApplicationContext : IdentityDbContext<User, IntRole, int, IntUserLogin, IntUserRole, IntUserClaim>
{
public ApplicationContext()
: base(nameOrConnectionString: "constr") { }
public ApplicationContext(string connectionString)
: base(nameOrConnectionString: connectionString) { }
static ApplicationContext()
{
Database.SetInitializer<ApplicationContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Use singular table names
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
Configuration.ValidateOnSaveEnabled = false;
}
public DbSet<Item> Items { get; set; }
}
public class ApplicationContextInitializer : DropCreateDatabaseAlways<ApplicationContext>
{
protected override void Seed(ApplicationContext context)
{
new List<Item>
{
new Item("test")
{
},
new Item("test2")
{
},
new Item("test3")
{
}
}.ForEach(t => context.Items.Add(t));
base.Seed(context);
}
}
在我的global.asax应用程序项目中,我有以下内容:
Database.SetInitializer(new ApplicationContextInitializer());
然后我尝试将数据添加到数据库:
mUnitOfWork = new UnitOfWork(new RepositoryProvider(new RepositoryFactories()));
mUnitOfWork.ItemRepository.Add(new Item("my item"));
mUnitOfWork.Save();
您需要在web.config中添加一个上下文,如下所示:
<configuration>
<entityFramework>
<contexts>
<context type="Application.Data.ApplicationContext, Application.Data">
<databaseInitializer type="Application.Data.ApplicationContextInitializer, Application.Data" />
</context>
</contexts>
</entityFramework>
</configuration>
如果其他人有类似的问题,请使用有用的链接:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
要扩展正确答案,您也可以通过代码添加:
public class DBConfig
{
public static readonly DBInitializer Initalizer = new DBInitializer();
public static void InitalizeDB()
{
System.Data.Entity.Database.SetInitializer<DMPDataContext>(Initalizer);
}
}
protected void Application_Start()
{
//common application startups
DBConfig.InitalizeDB();
//...
}