我正在构建一个restaurent预订系统,使用asp.net mvc 4 entityframework,unity(对于Ioc)和工作单元,存储库模式。所以我在vs 2013上为解决方案制作了4个项目:
这是我的dbContext的代码:
public class RestaurentDbSystem : UnitOfWork
{
public RestaurentDbSystem(string nameOrConnStr)
: base(nameOrConnStr)
{
}
}
这里是UnitOfWork:
public class UnitOfWork : DbContext, IUnitOfWork
{
public UnitOfWork(string nameOrConnString)
: base(nameOrConnString)
{
}
}
这是配置我的容器(Unity)的代码:
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
// register all your components with the container here
// it is NOT necessary to register your controllers
container.RegisterType<IUnitOfWork, RestaurentDbSystem>(new PerHttpRequestLifetime(),
new InjectionConstructor("RestaurentDbSystem"));
// e.g. container.RegisterType<ITestService, TestService>();
container.RegisterType<IClientService, ClientService>();
container.RegisterType<IClientRepository, ClientRepository>();
container.RegisterType<IRepository<User>, Repository<User>>();
container.RegisterType<IRepository<UserType>, Repository<UserType>>();
return container;
}
以及我在web.config上配置连接字符串
<add name="RestaurentDbSystem"
connectionString="Data Source=LMA000049\mssqlserver;
Initial Catalog=RestaurentSystemDb;Integrated Security=true"
providerName="System.Data.SqlClient" />
我创建了名为=&#39; RestaurentSystemDb&#39;的数据库。
问题是执行app时我有这个例外:
类型&#39; System.Data.ProviderIncompatibleException的例外&#39;发生在EntityFramework.dll中但未在用户代码中处理
答案 0 :(得分:0)
public class RestaurentDbSystem : UnitOfWork
中的 RestaurentDbSystem
Initial Catalog=RestaurentSystemDb
RestaurentSystemDb
我认为这两者必须匹配。
通常,如果它们不相同,Code-First会尝试在SQL Express上创建数据库。