Visual studio 2012 通过NuGet混淆实现EntityFramework包含
在通过NuGet包含EntityFramework之后,我真的很困惑。因此,我创建了一个名为CustomModules的项目,在这里我得到了我的数据库上下文:Visual studio 2012 通过NuGet混淆实现EntityFramework包含,visual-studio-2012,entity-framework-6,Visual Studio 2012,Entity Framework 6,在通过NuGet包含EntityFramework之后,我真的很困惑。因此,我创建了一个名为CustomModules的项目,在这里我得到了我的数据库上下文: public class Context : DbContext { public virtual IDbSet<FreightCompany> Companies { get; set; } public virtual IDbSet<FuelSurcharge> FuelSurcharges {
public class Context : DbContext
{
public virtual IDbSet<FreightCompany> Companies { get; set; }
public virtual IDbSet<FuelSurcharge> FuelSurcharges { get; set; }
public virtual IDbSet<Zone> Zones { get; set; }
public virtual IDbSet<ZoneMapping> ZoneMappings { get; set; }
public virtual IDbSet<Warehouse> Warehouses { get; set; }
public virtual IDbSet<ShippingRate> ShippingRates { get; set; }
public virtual IDbSet<Markup> Markups { get; set; }
}
我已经启用了迁移,所有这些都被推送到了数据库中。我现在想在web应用程序中使用它。因此,我将连接字符串从CustomModules.appconfig复制到我的CMSApp.webconfig
此时,我尝试在ASPX页面上使用EntityDataSource,发现没有命名容器可供选择
所以我读了各种各样的书,发现有两种类型的连接字符串。一个典型的ADO和一个实体框架。我想我刚刚得到了一个:
<add name="Context" providerName="System.Data.SqlClient" connectionString="Persist Security Info=False;database=DS_Kentico;server=SERVER;user id=USER;password=PWD;Current Language=English;Connection Timeout=240;" />
因此,我已经阅读了EntityFrameworkOne和生成一个实体框架的方法,建议使用附加到EDMX文件的EntityFrameworkDesigner。但我没有EDMX文件。所以我很困惑,是我让自己进入了某种疯狂的状态,还是没有EDMX文件是正常的
最终,我该如何创建一个实体框架连接字符串,该字符串正确地使用我引用的DLL中需要的任何内容、上下文等
编辑
我还应该补充一点,我看不到任何csdl、ssdl文件在这些字符串中经常被引用…要使用代码优先的方法,您需要以不同的方式编写连接字符串,假设use LocalDb和MDF文件将附加到您的App_数据解决方案的文件夹:
<add name="SomeContext"
connectionString="Data Source=(LocalDb)\v11.0;AttachDBFileName=|DataDirectory|\YOURNAME.mdf;Initial Catalog=YOURNAME;Integrated Security=SSPI"
providerName="System.Data.SqlClient"/>
您还需要为localDb配置连接工厂:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
数据库应该在您第一次从代码创建DbContext类时创建,直到不会创建数据库为止。首先使用代码时,没有模型文件。类和上下文是您的模型。所以是的,没有模型文件是正常的。因此,问题一定与实体或上下文的引用或可访问性公共与私有有关。如果使用一个或两个类将上下文文件复制到web应用程序项目,会发生什么情况?你能把它用在那种情况下吗?@JotaBe:谢谢。我相信我今天找到了答案,那就是你不能使用配置。相反,使用CodeFirst时有一种不同的绑定方式。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>