2015-01-23 3 views
2

Я работаю в Asp.net с инфраструктурой сущностей в vs 2010 с помощью базы данных oracle. Я предоставляю строку подключения из кода для работы с фреймами данных объекта datacontext. Вот мой код:Исключение Entity Framework: указанная схема недействительна.

public static string getConStrSQL() 
    { 

     //string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder 
     string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder 
     { 
      Metadata = "res://*", 
      Provider = "Oracle.ManagedDataAccess.Client", 
      //Provider = "Oracle.DataAccess.Client", 
      ProviderConnectionString = new System.Data.SqlClient.SqlConnectionStringBuilder 
      { 
       //InitialCatalog = "ORCL", 
       DataSource = "MONOJ-PC:1521/ORCL", 
       //IntegratedSecurity = false, 
       UserID = "C##MONOJ",     // User ID such as "sa" 
       Password = "Thanks123",    // hide the password 
      }.ConnectionString 
     }.ConnectionString; 

     return connectionString; 
    } 

    public List<CUSTOMER> GetCustomerList() 
    { 

     using (Entities db = new Entities()) 
     { 
      db.Connection.ConnectionString = getConStrSQL(); 
      db.Connection.Open(); 

      var data = from p in db.CUSTOMERs 
         select p; 

      db.Connection.Close(); 

      return data.ToList(); 
     } 
    } 

Но когда я запускаю код я получаю следующие ошибки:

Схема Указана недопустимая. Ошибки: ошибка 0194: все артефакты, загруженные в ItemCollection, должны иметь одинаковую версию. Были обнаружены несколько версий. DAL.DBModel.ssdl (2,46): ошибка 0172: все артефакты SSDL должны быть нацелены на одного и того же провайдера. Поставщик «Oracle.DataAccess.Client» отличается от «Oracle.DataAccess.Client», который встречался ранее. DAL.DBModel.ssdl (2,89): ошибка 0169: все артефакты SSDL должны быть нацелены на одного и того же провайдера. ProviderManifestToken '12 .1 'отличается от «9.2», который встречался ранее. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (3,4): ошибка 0019: имя EntityContainer должно быть уникальным. EntityContainer с именем «Схема» уже определен. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (834,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.Table» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (844,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.TableColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (870,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.View» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (882,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ViewColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (908,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.Function» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (933,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.Procedure» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (943,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.Parameter» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (967,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.Constraint» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (979,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.CheckConstraint» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (987,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ConstraintColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (996,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ForeignKeyConstraint» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1005,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ForeignKey» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1016,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ViewConstraint» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1031,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.TableTableConstraint» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1044,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ConstraintConstraintColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1057,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ConstraintForeignKey» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1070,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.FromForeignKeyColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1083,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ToForeignKeyColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1096,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.TableTableColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1109,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ViewViewColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1122,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.FunctionFunctionParameter» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1135,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ProcedureProcedureParameter» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1148,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ViewViewConstraint» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1161,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ViewConstraintConstraintColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1174,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Тип name 'Oracle.ViewConstraintForeignKey' уже определен. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1187,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.FromForeignKeyViewColumn» уже определено. Oracle.ManagedDataAccess.src.EntityFramework.Resources.EFOracleStoreSchemaDefinition.ssdl (1200,4): ошибка 0019: Каждое имя типа в схеме должно быть уникальным. Имя типа «Oracle.ToForeignKeyViewColumn» уже определено.

Я googled, но не могу получить никакого ответа. Пожалуйста, помогите мне. Это серебро.

+0

Сколько EDMX-файлы у вас есть в вашем проекте? – tom

+0

Спасибо за ответ, один .edmx файл в моем проекте .... –

ответ

0

Я знаю, что это answare уже поздно, но я надеюсь, что это сервер будущие ссылки.

У меня была такая же проблема, и я узнал, что этот вопрос правильно указать метаданные:

string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder 
{ 
    Metadata = "res://*/Models.ModelKDM.csdl|res://*/Models.ModelKDM.ssdl|res://*/Models.ModelKDM.msl", 
    Provider = "Oracle.DataAccess.Client", 
    ProviderConnectionString = new System.Data.SqlClient.SqlConnectionStringBuilder 
    { 
     DataSource = server, 
     UserID = user, 
     Password = pass, 
    }.ConnectionString 
}.ConnectionString; 
return connectionString; 
1

Проверьте ссылки на проект - вы можете включить проект, который «приносит» свою собственную базу данных/схему. Как и в:

  • Project A -> имеет EF версии X, базы данных project_a.edmx
  • Project B -> References 'Проект А', имеет EF версия Y, база данных project_b.edmx

где версии X и Y могут быть разными.

Это может быть связано с различными строками подключения, генерируемых в зависимости от версии .NET/EF - больше http://weblogs.asp.net/kencox/schema-specified-is-not-valid-error-on-upgrading-to-asp-net-4

Смежные вопросы