在MVC3应用程序中创建单独的DAL项目

时间:2012-08-30 14:34:40

标签: asp.net asp.net-mvc asp.net-mvc-3 entity-framework entity-framework-5

我正在开始一个新的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文件。

2 个答案:

答案 0 :(得分:2)

  

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

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

  

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

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

答案 1 :(得分:1)

  1. |DataDirectory|是一个在您的网络项目中评估为~/App_Data/的宏。因此,请在path/to/your/project/App_Data/MyDb.sdf
  2. 中查找.sdf文件
  3. 您需要将在App.config中添加的任何其他设置复制到Web.config。