实体框架 无法加载指定的元数据资源时出错


是的,

我确实阅读并尝试了实体框架 无法加载指定的元数据资源

我通常首先使用代码,并且没有问题。但是我需要对项目进行故障排除EDMX

上下文:

public partial class x500Entities : DbContext
{
    public x500Entities()
        : base("name=x500Entities")
    {
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }
    public virtual DbSet<WorkerPublicExtended> WorkerPublicExtendeds { get; set; }
}

连接字符串 :

<add name="x500Entities"
connectionString="metadata=res://*/CDISWorkerPublicExtended.csdl|res://*/CDISWorkerPublicExtended.ssdl|res://*/CDISWorkerPublicExtended.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xserver;initial catalog=x500;persist security info=True;user id=xuser;password=xpassword;MultipleActiveResultSets=True;App=EntityFramework&quot;"
providerName="System.Data.EntityClient"/>

错误:

EntityFramework 中发生类型为"System.Data.Entity.Core.MetadataException"的异常.dll但未在用户代码中处理 其他信息:无法加载指定的元数据资源。

点击此行后:

return context.WorkerPublicExtendeds.FirstOrDefault(x => x.upperIDSID == idsid.ToUpper().Trim());

完整方法:

 public WorkerPublicExtended GetEmployee(string idsid)
 {
     using (x500Entities context = new x500Entities())
     {
         return context.WorkerPublicExtendeds.FirstOrDefault(x => x.upperIDSID == idsid.ToUpper().Trim());
     }
 }
  1. 为什么会这样?
  2. 我连接到sql服务器ssms,但我没有看到我在图表edmx和模型中看到的表WorkerPublicExtended,我没有看到该名称在哪里转换为真正的表名。这是怎么回事?

可能的原因:1) 您的资源文件在您的项目中无处可寻(此资源文件在连接字符串中的 app.config 中配置)确认 OYU 拥有它。

2)当您说连接到数据库并且看不到表时,那么您在错误的数据库中?这不应该发生,您为另一个数据库生成了 EDMX,或者有人删除了表并且没有重新生成 EDMX?:X

如果您 200% 确定要连接的数据库是最新的架构、过程、视图等,或者它是生产数据库,为什么不删除整个 edmx 并重新创建、测试和重新部署呢?

EMDX 的三个部分在连接字符串中看起来是正确的。 仔细检查此部件是否正确后(请参阅本指南以解决您的问题):

  • 您可能已将模型的"元数据项目处理"属性更改为"复制到输出目录",或者
  • 您更改了其他内容(如程序集的名称),或
  • 您可能正在使用编译后任务来嵌入不再工作的 EMDX。

来源于这里。

还要检查整个字符串的语法是否正确。

最新更新