我就站在我的上述評論修正,你將不得不通過二級參考訪問DAL。如果你是真正想在你的web項目引用DAL保持,創建您的BLL一個引導程序的類,它的數據庫的東西你
的例子是從下面的博客帖子拉:http://weblogs.asp.net/rashid/archive/2009/02/17/use-bootstrapper-in-your-asp-net-mvc-application-and-reduce-code-smell.aspx
創建自舉接口
public interface IBootstrapperTask
{
void Execute();
}
創建一個類,將處理您的數據庫配置
public class InitializeDatabase : IBootstrapperTask
{
public void Execute()
{
Database.SetInitializer(new Configuration());
using (var db = new Context())
{
try
{
db.Database.Initialize(false);
}
catch (DataException ex)
{
}
catch (Exception ex)
{
throw;
}
}
}
}
創建一個靜態類將執行的任務(你可以有多個,註冊的路線可以移動到BootstrapperTask)
public static class Bootstrapper
{
static Bootstrapper()
{
ConfigureContainer();
}
public static void Run()
{
var tasks = ServiceLocator.Current.GetAllInstances<IBootstrapperTask>();
foreach(var task in tasks)
{
task.Execute();
}
}
private static void ConfigureContainer()
{
IUnityContainer container = new UnityContainer();
UnityConfigurationSection configuration = (UnityConfigurationSection) ConfigurationManager.GetSection("unity");
configuration.Containers.Default.Configure(container);
ServiceLocator.SetLocatorProvider(() => new UnityServiceLocator(container));
}
}
最後,你的Global.asax將有一個襯墊
protected void Application_Start()
{
Bootstrapper.Run();
}
還有一些web.config的事情要做,你會在博客文章中看到。另外,this question可以提供更多關於配置細節的信息等。與簡單地不需要引用DAL以及社區周圍的一些優秀帖子有關,爲什麼使用這種模式是一件好事以及幾種不同的實施方法。
.Net 4/Mvc3?你的目標框架是什麼? – Tommy
NET4,MVC3和EF5 –