Asp.Net应用程序使用MySql+;实体框架

Asp.Net应用程序使用MySql+;实体框架,mysql,asp.net,ef-code-first,entity-framework-5,Mysql,Asp.net,Ef Code First,Entity Framework 5,我的问题很简单:为什么我必须在ASP.NET应用程序上引用MySql.Data.Entity才能在类库中使用MySql Entity Framework 5 我解释:我已经将一个示例应用程序分为两层:Asp.NETWeb应用程序和类库(都在VB.Net中) 我在类库中引用了MySql.Data和MySql.Data.Entity,在类库中我创建了代码优先模型和DbContext 我在Asp.Net应用程序中引用了MySql.Web,并将DbProviders放在Web配置和连接字符串中 当我尝试

我的问题很简单:为什么我必须在ASP.NET应用程序上引用MySql.Data.Entity才能在类库中使用MySql Entity Framework 5

我解释:我已经将一个示例应用程序分为两层:Asp.NETWeb应用程序和类库(都在VB.Net中)

我在类库中引用了MySql.Data和MySql.Data.Entity,在类库中我创建了代码优先模型和DbContext

我在Asp.Net应用程序中引用了MySql.Web,并将DbProviders放在Web配置和连接字符串中

当我尝试运行一个简单查询时,它失败了,在MySql.Data.MySqlClient.MySqlClientFactory.get_MySqlDbProviderServicesInstance()上出现了一个通用的NullPointerException

但是,如果我在Web应用程序上安装MySql.Data.Entity,那么一切都会顺利进行


在我看来,如果我将数据访问层与表示分离,为什么我必须引用仅在数据层中使用的dll?这与CLR加载程序集的方式有关吗?还是我做错了什么?

您的类库引用了MySql Entity Framework 5,因此需要安装它。如果您在本地开发,您可能不需要首先安装这些位就可以编译应用程序(假设您对类库的引用是对已编译的DLL的引用),但您将无法运行应用程序。

不知道您的答案是否正确,但问题不是部署。如果我必须将数据dll也放在表示层中,那么使用单独的层有什么意义呢。