You need to enable JavaScript to run this app. ASP.NET MVC中使用Entity Framework查询数据表报错如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC中使用Entity Framework查询数据表报错如何解决?

报错原因

  • 你采用数据库优先(Database First)模式创建ADO.NET实体模型,EF默认启用了Code First数据库初始化策略,运行时会自动校验实体与数据库结构的匹配性,触发运行时异常。
  • 配置文件中的连接字符串不符合Database First要求:Database First需要使用包含CSDL/SSDL/MSL元数据路径的实体连接字符串,若误用普通ADO.NET连接字符串,设计阶段可正常加载表,但运行时会出现连接/映射错误。
  • ETAConfiguration表未设置主键,EF要求所有实体必须映射主键字段,无主键的表查询时会直接抛出异常。

解决方法

1. 禁用Code First初始化策略

在上下文类MyOwnTaxDatabaseEntities的构造函数中添加禁用逻辑:

public MyOwnTaxDatabaseEntities() : base("name=MyOwnTaxDatabaseEntities")
{
    Database.SetInitializer<MyOwnTaxDatabaseEntities>(null);
}

2. 修正连接字符串配置

检查Web.config的连接字符串配置,确保是带元数据的实体连接格式,且providerName为System.Data.EntityClient,示例如下:

<add 
    name="MyOwnTaxDatabaseEntities" 
    connectionString="metadata=res://*/你的模型命名空间.你的模型文件名.csdl|res://*/你的模型命名空间.你的模型文件名.ssdl|res://*/你的模型命名空间.你的模型文件名.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=你的SQL Server实例地址;initial catalog=MyOwnTaxDatabase;integrated security=True;MultipleActiveResultSets=True&quot;" 
    providerName="System.Data.EntityClient"
/>

3. 检查实体主键映射

打开EDMX设计器,确认ETAConfiguration实体已映射对应数据库表的主键字段。若数据库表本身无主键,需先给表添加主键后重新更新实体模型,或手动在EDMX中指定唯一非空字段作为实体主键。

内容的提问来源于stack exchange,提问作者Ahmed Waguih

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 16:15:03