2015-04-15 4 views
0

Я использую Entity Framework (последняя версия) с помощью Oracle Driver (последняя версия) в приложении ASP.NET MVC 5. Я хочу установить строку подключения для своей модели во время выполнения, но каждый раз, когда я делаю это, я получаю данные из таблицы, которую я использовал для создания модели. То же самое происходит при изменении строки подключения в файле web.config. Кто-нибудь знает, почему он ведет себя таким образом?Entity Framework с oracle can't изменить строку подключения

это, как я создать строку подключения:

public static string CreateConnectionString(string userName, string service) 
    { 
     const string providerName = "Oracle.ManagedDataAccess.Client"; 

     OracleConnectionStringBuilder oraBuilder = new OracleConnectionStringBuilder(); 
     oraBuilder.DataSource = service + ":1521/" + service; 
     oraBuilder.UserID = userName; 
     oraBuilder.Password ="xxx"; 
     oraBuilder.PersistSecurityInfo = true; 

     EntityConnectionStringBuilder efBuilder = new EntityConnectionStringBuilder(); 
     efBuilder.Metadata = "res://*/Model2.csdl|res://*/Model2.ssdl|res://*/Model2.msl"; 
     efBuilder.Provider = providerName; 
     efBuilder.ProviderConnectionString = oraBuilder.ConnectionString; 
     return efBuilder.ConnectionString; 
    } 

это перегрузка конструктора model's:

государственных образований (строка ConnectionString) : основание (ConnectionString) {

} 

это ист мое подключение строку:

+0

Пожалуйста должность некоторые примеры кода для контекста. – DavidG

+0

это ist моя строка соединения: MichaelHess

ответ

0
 try this connection string:   
    <connectionStrings> 
<add name="VoccDbContext" connectionString="metadata=res://*/Entities.Vocc.VoccModel.csdl|res://*/Entities.Vocc.VoccModel.ssdl|&#xD;&#xA;res://*/Entities.Vocc.VoccModel.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=sameDbName;PASSWORD=somePass;USER ID=someUser;&quot;"providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
+0

это похоже на мою строку подключения? – MichaelHess

+0

проверить ваш ManagedDataAccess в oracle-клиенте – balajibran

+0

если я использую вашу строку соединения, я получу исключение, которое говорит, что он не может отличить ... DataAccess ... to ManagedDataAccess – MichaelHess

0
DIRECTORY_SERVERS=(tnsnames.somesite.org:389:636) 
DEFAULT_ADMIN_CONTEXT="dc=site,dc=com" 
DIRECTORY_SERVER_TYPE=OID 

here(LDAP.ORA file) to be modified with correct LDAP Parameters 
+1

Что вы подразумеваете под этим? – MichaelHess

+0

Объяснение вашего кода поможет сделать это лучшим ответом. – skrrgwasme

0

Не редактировать XXXModels.cs. Попробуйте изменить XXXModels.Context.tt.

Добавить следующий код после public <#=code.Escape(container)#>()...}

public <#=code.Escape(container)#>(string connectionString) 
     : base(connectionString) 
    { 
<# 
if (!loader.IsLazyLoadingEnabled(container)) 
{ 
#> 
     this.Configuration.LazyLoadingEnabled = false; 
<# 
} 

foreach (var entitySet in container.BaseEntitySets.OfType<EntitySet>()) 
{ 
    // Note: the DbSet members are defined below such that the getter and 
    // setter always have the same accessibility as the DbSet definition 
    if (Accessibility.ForReadOnlyProperty(entitySet) != "public") 
    { 
#> 
     <#=codeStringGenerator.DbSetInitializer(entitySet)#> 
<# 
    } 
} 
#> 
    } 
Смежные вопросы