好吧,我整个上午都用Google搜索过,我真的可以使用一些帮助。我正在跟随Adam Freeman的一本书(Pro ASP.Net MVC 4),我被困在第7章。顺便说一句,我不知道为什么Apress没有像Wrox这样的支持论坛,作者可以帮助人们解决这些问题。他们的书。
无论如何,本书首先使用数据库来EF,在本书之后,我创建了一个localDB,定义了数据库模式并添加了一些示例数据。然后创建了这个DBcontext
using System.Data.Entity;
using SportsStore.Domain.Entities;
namespace SportsStore.Domain.Concrete
{
class EFDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
}
然后这是连接字符串
<connectionStrings>
<add name="EFDbContext" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=SportsStore;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
此外,这里有一些我认为在安装过程中由EF / Nuget自动添加的设置
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
错误消息到处都是,因为我一直在弄乱它,错误消息不断变化,但它们都指向了一些关于Entity Framework的东西。请帮助,非常感谢任何帮助,所以我可以继续我的自学。
当前的错误消息是“ 配置部分'entityFramework'无法读取,因为它缺少部分声明 ”
Config Source:
96: </runtime>
97: <entityFramework>
98: <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
答案 0 :(得分:3)
要尝试处理错误,可以在构造函数中指定连接字符串名称:
using System.Data.Entity;
using SportsStore.Domain.Entities;
namespace SportsStore.Domain.Concrete
{
public class EFDbContext : DbContext
{
public EFDbContext() : base("EFDbContext") {}
public DbSet<Product> Products { get; set; }
}
}
确保为名称传入的字符串与web.config
中的“name”属性相匹配<connectionStrings>
<add name="EFDbContext" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=SportsStore;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
如果这不起作用,请尝试使用“name =”添加,如下所示(有用reference here)。如果在配置文件中找不到连接字符串,这会强制EF5抛出可用于诊断的错误。:
namespace SportsStore.Domain.Concrete
{
public class EFDbContext : DbContext
{
public EFDbContext() : base("name=EFDbContext") {}
public DbSet<Product> Products { get; set; }
}
}
如果这不起作用,那么我们需要您提供一些例外细节。
编辑:
您的entityFramework部分应如下所示,请注意它是元素的直接子元素:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- other section and sectionGroup declarations -->
</configSections>
<!-- other sections -->
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
<!-- other sections -->
</configuration>
答案 1 :(得分:0)
我使用的是ASP.NET Core 1.0 RC1。对我而言,因为web.config而无法正常工作。问题出在web.config文件中。一开始,我的配置文件看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
要解决此问题,有两种方法。首先是添加到web.config行中,正如Andy Brown所示。请注意不同版本的EF。
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
</configuration>
其次是删除整个entityFramework部分。