Имя EntityContainer должно быть уникальным. EntityContainer с именем 'Объекты' уже определяется

Для небольшого фона:

У меня есть проект DLL со следующей структурой:

Rivworks.Model (project)  
  \Negotiation (folder)  
      Model.edmx (model from DB #1)  
  \NegotiationAutos (folder)  
      Model.edmx (model from DB #2)  

Я переместил строки подключения от app.config этого проекта до web.config файла. Они не находятся в разделе ConnectionString. Скорее у меня есть статический класс, который использует часть web.config и выставляет их моему приложению как AppSettings. [settingName].

<FeedAutosEntities_connString>metadata=res://*/;provider=System.Data.SqlClient;provider connection string='Data Source=db4;Initial Catalog=RivFeeds;Persist Security Info=True;User ID=****;Password=&quot;****&quot;;MultipleActiveResultSets=True'</FeedAutosEntities_connString>
<RivWorkEntities_connString>metadata=res://*/NegotiationAutos.NegotiationAutos.csdl|res://*/NegotiationAutos.NegotiationAutos.ssdl|res://*/NegotiationAutos.NegotiationAutos.msl;provider=System.Data.SqlClient;provider connection string='Data Source=db2;Initial Catalog=RivFramework_Dev;Persist Security Info=True;User ID=****;Password=&quot;****&quot;;MultipleActiveResultSets=True'</RivWorkEntities_connString>

У меня есть 2 класса, один для каждого Контекста, и они похожи на это:

namespace RivWorks.Model
{
    public class RivWorksStore
    {
        private RivWorks.Model.Negotiation.Entities _dbNegotiation;

        public RivWorksStore(string connectionString, string metadata, string provider)
        {
            EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
            entityBuilder.ConnectionString = connectionString;
            entityBuilder.Metadata = "res://*/";    // metadata;
            //entityBuilder.Provider = provider;
            _dbNegotiation = new RivWorks.Model.Negotiation.Entities(entityBuilder.ConnectionString);
        }

        public RivWorks.Model.Negotiation.Entities NegotiationEntities()
        {
            return _dbNegotiation;
        }
    }
}

namespace RivWorks.Model
{
    public class FeedStoreReadOnly
    {
        private RivWorks.Model.NegotiationAutos.Entities _dbFeed;

        public FeedStoreReadOnly(string connectionString, string metadata, string provider)
        {
            EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
            entityBuilder.ConnectionString = connectionString;
            entityBuilder.Metadata = "res://*/";    // metadata;
            //entityBuilder.Provider = provider;
            _dbFeed = new RivWorks.Model.NegotiationAutos.Entities(entityBuilder.ConnectionString);
        }

        public RivWorks.Model.NegotiationAutos.Entities ReadOnlyEntities()
        {
            return _dbFeed;
        }
    }
}

Вы отметите, что MetaData переписывается к короткой версии.

Когда я комментирую ту строку в каждом классе, я получаю эту ошибку:

Не мог загрузить указанный ресурс метаданных.

Когда я оставляю ту строку внутри в каждом классе, я получаю эту ошибку:

Указанная схема не действительна. Ошибки:

Согласование. Model.csdl (3,4): ошибка 0019: имя EntityContainer должно быть уникальным. EntityContainer с именем 'Объекты' уже определяется.

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

38
задан abatishchev 21 July 2013 в 04:03
поделиться

1 ответ

Ваши два файла EDMX, вероятно, имеют то же имя контейнера сущности. Вам нужно изменить (по крайней мере) один из них.

в дизайнере GUI, браузер Open Model. Ищите узел, который говорит «Entitycontainer: Entity». Нажмите на нее. В свойствах изменить имя к чему-то другому. Сохранить и восстановить.

46
ответ дан 27 November 2019 в 02:55
поделиться