2014-01-07 2 views
1

У меня есть следующий код где-то в приложении. код выглядит следующим образом:Динамическое создание строки подключения EF6.0 вызывает проблемы

Hyperion.Data.MCQEntities _model = null; 
    const string K_MODEL = @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;"; 

    public Engine(string cnnstr) 
    { 
     //string connection =(new ConnectionStringBuilder(cnnstr)).ToString(); 
     string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder 
     { 
      Metadata = K_MODEL, //"res://*", 
      Provider = "System.Data.SqlClient", 
      ProviderConnectionString = cnnstr, 
     }.ConnectionString; 

     _model = new Data.MCQEntities(connectionString); 
     _model.Connection.Open(); 
    } 

проблема, которую я не понимаю, что когда я использую Metadata = "res://*" он работает, но когда я использую Metadata=K_MODEL он не работает вообще. В чем может быть проблема?

+1

Вы дважды проверили, что значение 'K_MODEL' верное? Моя строка соединения Метаданные выглядят следующим образом: 'res: // */Entity. {0} .csdl | res: // */Entity. {0} .ssdl | res: // */Entity. {0} .msl' – StriplingWarrior

+0

проверено много раз. моя работа не застревает, и я уже использую другую форму, которая работает. Я просто хочу знать, почему он так себя ведет? удаление модели и воссоздание, как утверждают некоторые, не является решением. ресурсы встроены, если они не были тогда res: // * никогда не будет работать. и я также подтвердил имя файла модели и loc. что происходит за кулисами? –

+0

Я не знаю, как все это работает за кулисами. Он работает, если вы используете ту же строку соединения в файле конфигурации, а не вставляете ее? Возможно, вы захотите дважды проверить, что ваш конструктор не был изменен, чтобы сделать черную магию. – StriplingWarrior

ответ

0

res//* сообщает EF, что метаданные встроены в сборку в качестве ресурса. Если вы пропустите его, EF ищет файл на диске. Действие по умолчанию для edmx заключается в встраивании артефактов в сборку, поэтому, если вы не изменили эти файлы, они не находятся на диске, и EF их не может найти.

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