3

我正在开始一个新的 ASP.NET 项目,并且我正在尝试遵循我在 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 项目中。其次,是否需要执行任何进一步的配置才能使其正常工作?一个教程的链接会很棒。

我已经尝试按照教程进行操作,但我的 DAL 项目没有可以使用的 Global.asax 文件。

4

2 回答 2

2

实际的 sdf 文件将在哪里创建?

它将在表示层中创建。确保那里有一个App_Data子文件夹。这就是我第一次尝试时咬我的地方。还要确保Show all files在解决方案资源管理器中打开或打开 Windows 资源管理器到 App_Data 子文件夹以查看它出现在那里。

但是我的 DAL 项目没有可以使用的 Global.asax 文件。

Global.asax 存在于表示层,而不是 DAL。您提到的教程的问题是它只使用了一个项目。在现实世界中,您可能会将其分散到多个项目中,典型的一个 ASP.NET (MVC) 项目和几个基于类库模板的项目。这会导致事情被放在正确的项目中。

于 2012-08-30T14:47:50.317 回答
1
  1. |DataDirectory|~/App_Data/是在您的 Web 项目中计算结果为的宏。因此,在 .sdf 中查找您的 .sdf 文件path/to/your/project/App_Data/MyDb.sdf
  2. 您需要将在 App.config 中添加的任何其他设置复制到 Web.config。
于 2012-08-30T14:46:24.103 回答