2010-02-05 4 views
1

내 웹 사이트에 두 개의 데이터베이스에 액세스하기 위해 LINQ to SQL을 사용하고 있습니다. 첫 번째 데이터베이스는 웹 사이트 (WEBSITE라고 부름) 데이터이고 두 번째 데이터베이스는 트랜잭션 기록입니다 (WEBSITE_HISOTRY라고합니다). WEBSITE_HISOTRY에서 datacontext에 테이블을 추가 한 지 얼마되지 않아서 (아마도 가장 좋은 생각은 아니지만) OK를 클릭했다는 경고를 받았습니다. Visual Studio에 대한 데이터베이스 연결이 내 구성 또는 그 선을 따르는 것과 다르다는 불평이있었습니다. 내 서버에 게시 할 때까지 모든 것이 잘 작동했습니다. 계속 데이터베이스를 찾을 수 없습니다. 오류가 발견되었으며 연결 문자열을 기록했을 때이를 발견했습니다.LINQ to SQL DataContext 및 연결 문제

WEBSITE_HISTORY

데이터 원본 = MYCOMPUTER의 \ SQLEXPRESS; 초기 카탈로그 = WebSiteHistory; 통합 보안 = TRUE

웹 사이트

데이터 원본 = my.dyndns.net; 네트워크 라이브러리 = DBMSSOCN; 초기 카탈로그 = 웹 사이트; 사용자 ID = WebsiteUser; 암호 = *******;

WEBSITE_HISTORY datacontext의 생성자에 매개 변수없는 생성자가있는 WEBSITE와는 달리 연결 문자열이 필요하다는 것도 발견했습니다. 생성자를 변경했지만 datacontext에 테이블을 추가 할 때마다 변경됩니다. DataContext 연결 속성을 Application = true로 설정하는 것에 대한 다른 질문을 읽었습니다. 이 시도했지만 올바른 설정을 "설정 속성 이름"설정할 수 없습니다.

내가 무슨 짓을했는지 모르겠다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

-1

데이터 컨텍스트에는 여러 개의 오버로드 된 생성자가 있어야합니다. 그들 중 하나는 연결 문자열을 요청합니다. 나는 이것을 항상 사용하는 것이 좋습니다. 그 이유는 동일한 구조를 가진 새로운 데이터베이스를 가리 키도록 변경할 수있게 해주고 그런 식으로 작동하기 때문입니다. 내 데이터 컨텍스트 클래스를 쉽게 만들 수 있도록 정적 클래스를 만드는 경향이 있습니다.

public static class ContextCreator 
{ 
    public static CustomDataContext Create() 
    { 
    return new CustomDataContext(ConfigurationManager.ConnectionStrings["CName"].ConnectionString); 
    } 
} 
+0

나는 이것을 시도 할 것이다. WEBSITE_HISTORY에 대한 datacontext를 삭제하고 테이블을 다시 추가했으며 동일한 동작을 계속하고 Im 연결 문자열이 올바른지 확인합니다. 마치 Visual Studio에서 WEBSITE_HISTORY에 대한 연결 속성을 인식하지 못하는 것처럼 보입니다. – jimbo

+0

위에서 언급 한 접근 방식은 디자인 타임보다 런타임에 더 많은 의미가 있습니다 ... 언급 한 경고가 나타날 때, 이것은 DB에 대한 연결이 마지막으로 연결하려고 시도한 연결과 다르다는 것을 의미합니다 (다른 사용자 ID 또는 DB 이름이 다르게). 직장에있는 여러 사람 팀에 팝업 창이 있습니다. 여기서 우리는 각각 로컬 DB에서 테이블을 끌어옵니다. 따라서 귀하의 특정 문제를 일으키는 것이 무엇인지 확신 할 수 없습니다. 내가 그것을 100 % 이해하고 있는지 확신 할 수 없다. 죄송합니다. –

+0

"DC"란 무엇입니까? 매우 혼란스러운 대답. – Rhubarb

0

당신이 한 일은 효과가 없을 것입니다. 데이터베이스 컨텍스트는 단일 데이터베이스에 대한 연결입니다. 다른 데이터베이스의 테이블을 특정 컨텍스트에 추가하지 마십시오. 사실 이것은 단순히 작동하지 않을 것입니다. 여러 데이터베이스를 다루는 경우 각 데이터베이스마다 하나씩 여러 데이터베이스 컨텍스트 개체가 있어야합니다.

나는 질문에 대한 답변을 답으로 더 많이 받아들이면 더 많은 답변을 얻을 수있을 것이라고 생각합니다. 귀하의 합격률은 약 25 %입니다. 이것은 사람들이 당신에게 응답하지 못하게 할 수 있습니다.

+0

죄송합니다. 나는 두 개의 datacontext가 있다고 언급 했어야합니다. 하나는 WEBSITE 용이고 다른 하나는 WEBSITE_HISTORY 용입니다. WEBSITE datacontext는 문제없이 작동하는 WEBSITE_HISTORY 웹 사이트에서 잘 작동합니다. 의견을 주셔서 감사합니다. 나는 내 질문을 업데이트 할 것이다. – jimbo

0

저는 디자이너와의 싸움을 포기하고 그만 두었습니다. Brian이 제안한 연결 문자열 (예 : DataAccess.Properties.Settings.Default.WEBSITEHISTORY_ConnectionString)을 전달하면 작동합니다. 내가 속성 파일을 검사 할 때 나는 WEBSITE_HISTORY 속성이 나는를 havent이

[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] 

아직 들여다 실종됐다하지만 웹이 내 DATAACCESS 속성의 기본 연결을 사용하는 원인이되었다 베팅하고 있지 않다 발견 config.

브라이언의 설명에 따르면, 그가 설명한 시나리오는 내가 이것을 처음부터 시작한 원인이라고 생각합니다.

도움 주셔서 감사합니다.