我試圖先用代碼來生成一個數據庫和每一個我的應用程序運行的時候種子它,但是我得到以下錯誤:代碼優先數據庫生成外部DLL
Cannot attach the file 'C:{filepath}\Application\App_Data\mydatabase.mdf' as database 'mydatabase'.
我試着做'更新數據庫'(根據其他問題推薦),但不生成.mdf文件。
這是用來連接字符串:
Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\mydatabase.mdf;Initial Catalog=mydatabase;Integrated Security=True
由於一些背景資料,我有坐不同的解決方案兩個不同的項目:
- 應用
- 域
The 「應用」項目已在「域」項目
在域項目的引用我已經創建了我的第一個代碼模型和的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();