【问题标题】:Connection String Trouble MetaDataException连接字符串故障 MetaDataException
【发布时间】:2014-06-09 16:29:57
【问题描述】:

我的项目中有两个模型。当我添加第二个模型时,我在所有帐户页面中都收到了这个错误:

System.Data.MetadataException: The specified schema is not valid. Errors:
(8.6): error 0040: the nclob type is not qualified with a namespace or alias. Only primitive types can be used without qualification.

At line 34 of `InitializeSimpleMembershipAttribute.cs` : 

    using (var context = new UsersContext())
Ligne 33 :                     {
Ligne 34 :                         if (!context.Database.Exists())
Ligne 35 :                         {
Ligne 36 :                             // Create the SimpleMembership database without Entity Framework migration schema

还有我的连接字符串:

<connectionStrings>
    <add name="DefaultConnection" connectionString="User Id=devart;Password=1234;Data Source=localhost:1521" providerName="Devart.Data.Oracle" />
    <add name="Entities" connectionString="metadata=res://*/Models.ModelMAE.csdl|res://*/Models.ModelMAE.ssdl|res://*/Models.ModelMAE.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=localhost:1521;PASSWORD=1234;USER ID=TEST&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

usercontext连接字符串1:

public class UsersContext : DbContext
{
    public UsersContext()
        : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

UserContextconnectionString 2:

public class EntitiesMAE : DbContext
{

    public EntitiesMAE() : base("name=EntitiesMAE")
    {
    }

    public DbSet<OFFRE> OFFRE { get; set; }

    public DbSet<REGION> REGION { get; set; }
}

问题出在第二个连接字符串entities 中,当我删除它时,一切正常。 请问如何解决?

【问题讨论】:

  • 我也在一个项目中使用两个实体。我不认为这可能是问题。你能用UserContext类的代码更新你的问题吗?
  • 女巫你的意思是myModel.context.cs文件?
  • 不,UsersContext 类。您在 using 子句中使用的内容。
  • 对不起,我想不通,我是nweebie,你能给我文件路径吗?
  • 鼠标在第32行new UsersContext()时按F12即可。然后粘贴这个类的代码。

标签: c# asp.net-mvc web-config connection-string


【解决方案1】:

这看起来和这个问题有关:

http://forums.devart.com/viewtopic.php?t=21488

本文推荐两种方法。 1.禁用约定(我不推荐这个) 2.使用OracleEntityProviderConfig配置Workarounds.IgnoreSchemaName = true

他们还提到了使用特定的 DbContext 模板,您可以从这篇文章中找到该模板(我讨厌只发布链接,但那里的信息太多无法总结):

http://blog.devart.com/entity-developer-ef-code-first-dbcontext-template.html

但是,这是为 EF 4.1 编写的,您没有说明您使用的是什么版本的 EF...所以我不确定这是否仍然适用于您可能使用的任何版本。

所以要点是您不能只替换提供程序而不进行其他更改。您将不得不进行一些其他更改,我建议使用 DevArt DbContext 模板使用类似的代码生成代码,看看它产生了什么,然后将该代码放入您的应用程序中。

另外,您的代码显然是错误的。您正在使用不存在的连接字符串(您说连接字符串称为 Entities,但您的代码使用的是称为 EntitiesMAE 的连接字符串),您还说您的第二个上下文称为 UserContext,但您的代码称为 EntitiesMAE .我建议清理你的代码,让它拥有你的真实代码,否则我们只是试图帮助你处理无效的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多