Entity Framework 无法加载指定的元数据资源。

4

所以我在我的项目中设置了SQL Server和EF。

MPSDBEntities mpsEntities = new MPSDBEntities();

当我保存更改时,它能正常工作。例如:

mpsEntities.SaveChanges();

我会帮助翻译相关编程内容的中文,这段文字的意思是它更新了数据库(这是否意味着我的连接字符串正确?)

然而,每当我尝试从EF执行任何类型的加载数据/ SQL操作时,比如:

var temp = mpsEntities.CARD_BY_CHECKTYPE.Where(x => (x.CHECK_TYPE == "AA2")).ToList();

这会抛出一个异常:

无法加载指定的元数据资源。

这是我的连接字符串,我怀疑问题不在这里:

<add name="MPSDBEntities" 
     connectionString="metadata=res://*/MPSDBModel.csdl|res://*/MPSDBModel.ssdl|res://*/MPSDBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=PAE0DT-DDWB282\MPS2;initial catalog=MPS;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

我阅读了以下帖子,但它们没有解决我的问题。 System.Data.MetadataException: 无法加载指定的元数据资源 MetadataException: 无法加载指定的元数据资源 Entity Framework: 无法加载指定的元数据资源 无法加载指定的元数据资源 有人知道问题出在哪里吗?谢谢。
@petryuno1
这是我的DbContext,如果这就是你问的内容...
public partial class MPSDBEntities : DbContext
{
    public MPSDBEntities() : base("name=MPSDBEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<CARD_BY_CHECKTYPE> CARD_BY_CHECKTYPE { get; set; }
    ........
}

你的DbContext是什么样子? - slasky
@petryuno1,请查看我的编辑后的帖子。这些都是在我执行“添加 ADO.NET 实体数据模型”时自动生成的。 - Heisenberg
你有一个实体的.edmx文件吗?如果有,你可以在它上面运行“从数据库更新模型”的命令吗? - slasky
我点击了“从数据库更新模型”,然后点击了“完成”?但是并没有真正的变化……还是同样的错误信息。 - Heisenberg
1个回答

1

这对我有用。

从这个改变:

connectionString="metadata=res://*/Model.Project.csdl|res://*/Model.Project.ssdl|res://*/Model.Project.msl;

变为:

connectionString="metadata=res://*/;

然后在此之后添加您连接字符串的其余部分。希望能有所帮助。


尝试了,但还是输出了同样的错误信息。不过还是谢谢你! - Heisenberg
你是否检查了"App.config"和"Web.config"两个文件? - Adam Lee
谢谢。我在解决方案资源管理器中没有看到Web.config文件。抱歉,我没有将它设置为C# WPF项目,而是ASP.NET。 - Heisenberg
你的连接字符串没有问题,你尝试过另一个查询语句了吗? - Adam Lee
谢谢你的帮助。是的,我甚至尝试了最简单的代码,例如var temp = mpsEntities.CARD_BY_CHECKTYPE.ToList();但它也没有起作用。但是,如果不使用ToList(),var temp = mpsEntities.CARD_BY_CHECKTYPE却没有给我那个无法加载指定元数据资源的异常。 - Heisenberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接