我正在开始一个新的ASP.NET项目,我正在尝试关注multi-project approach I've seen mentioned in multiple questions around Stackoverflow。
我成功地设置了连接字符串(我认为),将它放在我的表示层的Web.config文件中。
<add name="MyDbContext" connectionString="Data Source=|DataDirectory|MyDb.sdf" providerName="System.Data.SqlServerCe.4.0"/>
但是,当我从BLL运行以下代码时,不会创建任何数据库。
using (var db = new MyDbContext())
{
db.MyEntities.Add(new MyEntity()
{
EntityName = "Entity 1"
});
db.SaveChanges();
}
首先,实际的sdf文件将在何处创建?我在DAL项目中假设。其次,我需要进行任何进一步的配置才能使其正常工作吗?指向教程的链接非常精彩。
我尝试过this教程,但是我的DAL项目没有我可以使用的Global.asax文件。
答案 0 :(得分:2)
在哪里创建实际的sdf文件?
它将在表示层中创建。确保您有一个 App_Data 子文件夹。这就是我第一次尝试它的时候。还要确保在解决方案资源管理器中打开Show all files
或打开Windows资源管理器到App_Data子文件夹,看它出现在那里。
但是我的DAL项目没有我可以使用的Global.asax文件。
Global.asax生活在表示层,而不是DAL。您提到的教程的问题是它只使用一个项目。在现实世界中,您可能会将其传播到多个项目,典型的一个ASP.NET(MVC)项目和几个基于类库模板的项目中。这会使事情被放入正确的项目中。
答案 1 :(得分:1)
|DataDirectory|
是一个在您的网络项目中评估为~/App_Data/
的宏。因此,请在path/to/your/project/App_Data/MyDb.sdf
。