2009-10-01 2 views
4

저는 작업중인이 사이드 프로젝트에 대한 ADO.NET 엔터티 데이터 모델로 작업하고 있습니다. 일반적으로 web.config에는 전체 연결 문자열 (사용자 및 암호)이 포함되지만 오늘 아침에는 기분이 좋지 않아서 연결 문자열에서 암호를 제외하기로 결정했습니다. 불행히도 데이터베이스를 조작하기 전에 암호를 설정하거나 전달하는 방법을 알아낼 수 없었습니다. 지금까지 수행 한 모든 검색 결과는 결실을 맺지 않았습니다. 나는 현재 일은 새 레코드를 추가 라인의 커플 : 나는 _entities.Connection의 내부 ConnectionString 속성이 참조ADO.NET 엔터티 데이터 모델을 사용하여 어떻게 연결 문자열 암호를 전달 (또는 설정)합니까?

_entities.AddToUploadSet(uploadFile); 
_entities.SaveChanges(); 

,하지만 난 암호 속성과 같은 유용한 아무것도 찾지 못했습니다.

아무도 도와 줄 수 있습니까? 감사! 그래서

alt text

당신이 볼 수 :

편집

는 설명의 경우,이 스크린 샷은 내가 web.config 파일에 암호를 포함할지 여부를 선택할 수있는 단계를 보여줍니다 프롬프트에서 제시하는대로 애플리케이션 코드에 설정해야합니다. 당신의 Web.config의 내부

답변

1

connection string builder를 사용합니다.

+0

기본적으로 내가 아래에서 한 것은 무엇입니까? – Anders

+1

글쎄, 네가 직접 쓴 건 아니지만 네. :) –

+1

예, 그게 내가 hehe을 의미합니다. 내가 한 일을 할 수있는 무언가가 있음을 알기 좋습니다. 내가 그것을 점검 할 것이다, 링크에 대한 감사! – Anders

0

이 유사한 항목이 될 것입니다 :

<connectionStrings> 
    <add name="HelpEntities" connectionString="metadata=res://*/Models.HelpModel.HelpModel.csdl|res://*/Models.HelpModel.HelpModel.ssdl|res://*/Models.HelpModel.HelpModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=(local);Initial Catalog=XXX;Integrated Security=True;MultipleActiveResultSets=True&quot;" 
     providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

위의 예는 통합 보안을 사용하지만 대신 사용자 이름과 암호를 사용하는 것이 가능하다.

1

글쎄, 내가 그랬어 일부 파고 주위와 덕트 테이프로이 솔루션을 함께 :

private static string CreateNewConnectionString(string connectionName, string password) 
{ 
    var config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~").ConnectionStrings.ConnectionStrings[connectionName]; 
    var split = config.ConnectionString.Split(Convert.ToChar(";")); 
    var sb = new System.Text.StringBuilder(); 

    for (var i = 0; i <= (split.Length - 1); i++) 
    { 
     if (split[i].ToLower().Contains("user id")) 
     { 
      split[i] += ";Password=" + password; 
     } 

     if (i < (split.Length - 1)) 
     { 
      sb.AppendFormat("{0};", split[i]); 
     } 
     else 
     { 
      sb.Append(split[i]); 
     } 
    } 
    return sb.ToString(); 
} 

는 예쁜 방법은 아닙니다 부여하지만,이 일을 가져옵니다. 연결 문자열 이름과 암호를 전달하고 암호로 업데이트 된 연결 문자열을 반환합니다. 이것은 내가 그것을 구현하는 방법입니다

_entities = new UploadEntity(CreateNewConnectionString("UploadEntity", "[removed]")); 
_entities.AddToUploadSet(uploadFile); 
_entities.SaveChanges(); 
관련 문제