【问题标题】:EntityFrameWork Add function: Unable to load the specified metadata resourceEntityFrameWork 添加功能:无法加载指定的元数据资源
【发布时间】:2016-05-01 21:29:33
【问题描述】:

我正在使用 Sql server 2014 并制作了 ADO.NET 实体数据模型。它生成了这个模型:

我正在尝试将我检索到的邮件添加到我的数据库中。它看起来像这样:

    public int StoreMail(PhishingMail PhishingMail)
    {
        using (var phishingMailStorage = new PhishFinderDB2Entities2())
        {
          //  phishingMailStorage.Database.Connection.Open();

            phishingMailStorage.PhishingMail.Add(PhishingMail);
            phishingMailStorage.SaveChanges();
        }
        return PhishingMail.PhishingMailId;
    }

每当我调试程序时。我被困在这部分:

phishingMailStorage.PhishingMail.Add(PhishingMail);

它给了我元数据异常是未处理的异常:未处理的异常 发生“System.Data.Entity.Core.MetadataException”类型的异常 EntityFramework.dll 中的附加信息:无法加载 指定的元数据资源。

这是我的连接字符串: 我真的不知道为什么它会生成这个巨大的字符串。这可能会导致问题。

<add name="PhishFinderDB2Entities2" connectionString="metadata=res://*/DataAccess.PhishFinderModel.csdl|res://*/DataAccess.PhishFinderModel.ssdl|res://*/DataAccess.PhishFinderModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=WIN7DEV;initial catalog=PhishFinderDB;integrated security=True;pooling=False;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /><add name="PhishFinderDB2Entities" connectionString="metadata=res://*/DataAccess.PhishFinderModel.csdl|res://*/DataAccess.PhishFinderModel.ssdl|res://*/DataAccess.PhishFinderModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(local);initial catalog=PhishFinderDB2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /><add name="PhishFinderDB2" connectionString="metadata=res://*/DataAccess.Model1.csdl|res://*/DataAccess.Model1.ssdl|res://*/DataAccess.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=WPNLL0038874\SQLEXPRESS;initial catalog=PhishFinderDB2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

你知道我为什么会得到这个异常吗? 谢谢

【问题讨论】:

  • 这可能是您的 PhishingMail 类是静态的并且参数 PhishingMail 与您的类名混淆了吗?也许这不是原因 - 但你应该在任何情况下保持你的参数小写符合惯例,例如public int StoreMail(PhishingMail phishingMail)

标签: c# entity-framework ado.net-entity-data-model


【解决方案1】:

尝试删除生成的PhishFinderDB2.edmx(如果您进行了自己的调整,请记住保存数据)。 也删除连接字符串。 然后重新生成整个 PhishFinderDB2 ado.net 模型。 对我来说,这帮助了很多次。

【讨论】:

  • 这有点帮助但是现在我在 savechanges 方法中遇到了这个错误:EntityFramework.dll 中发生了“System.Data.Entity.Validation.DbEntityValidationException”类型的未处理异常附加信息:验证失败一个或多个实体。有关详细信息,请参阅“EntityValidationErrors”属性。
  • 在“public int StoreMail(PhishingMail PhishingMail)”中,您使用“PhinshingMail-Object”语法中的变量,两者的编写方式完全相同。也许您应该重命名为“public int StoreMail(PhishingMail phishingMail)”。我希望这会有所帮助。
  • 谢谢,我改了。我仍然得到同样的例外。但至少我更进一步。
  • 嗯,如果所有约束都在代码中正确设置,我要做的是将对象的值与 DB 值进行比较。
  • 我刚刚发现,您可以调试所有这些异常。看看stackoverflow.com/questions/5400530/… 或:stackoverflow.com/questions/7795300/…
猜你喜欢
  • 2013-04-12
  • 2023-03-10
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
相关资源
最近更新 更多