문제

Wiki, 포럼 또는 블로그 소프트웨어와 같은 웹 애플리케이션에서는 데이터를 관계형 데이터베이스에 저장하는 것이 유용한 경우가 많습니다.많은 호스팅 회사가 호스팅 계획과 함께 단일 데이터베이스를 제공하므로(추가 데이터베이스에는 추가 비용이 발생함) 데이터베이스 개체(테이블, 뷰, 제약 조건 및 저장 프로시저)에 공통 접두사가 있는 경우 사용자에게 매우 유용합니다.데이터베이스 부족을 인식하는 애플리케이션에서는 하드 코딩된 테이블 접두사를 갖는 것이 일반적입니다.그러나 나는 더 많은 것을 원합니다.특히 web.config 파일에서 사용자가 지정할 수 있는 테이블 접두사(물론 적절한 기본값 포함)를 갖고 싶습니다.

저는 코딩을 싫어하기 때문에 크루드 저는 수동으로 작업하기 때문에 유능한 OR/M을 통해 작업하는 것을 선호하며 LINQ to SQL, Subsonic 및 ADO.Net을 사용하고 즐겼습니다.그러나 새 프로젝트에서 사용자의 web.config 파일에 테이블 접두사를 넣을 때 문제가 발생합니다.이 시나리오를 우아하게 처리할 수 있는 .Net 기반 OR/M 제품이 있습니까?

지금까지 내가 생각해 낼 수 있었던 최선의 방법은 아직 가상의 web.config 설정을 기반으로 어떻게든 업데이트해야 하는 외부 매핑 파일과 함께 LINQ to SQL을 사용하는 것입니다.

누구든지 더 나은 해결책이 있습니까?Entity Framework에서 이를 구현하려고 했지만 금방 엉망이 되었습니다.(EF에 대한 익숙하지 않아서?아마도.) SubSonic은 어떻습니까?코드 생성 시 외에 테이블 접두사를 적용하는 옵션이 있습니까?

도움이 되었습니까?

해결책

이제 Entity Framework와 LINQ to SQL 모두에서 이 작업을 수행하는 데 무엇이 필요한지 조사했습니다. 각 단계에 필요한 단계를 문서화했습니다..여기에 있는 답변보다 훨씬 길기 때문에 여기에 복제하는 대신 답변에 대한 링크로 만족하겠습니다.각각에 대해 상대적으로 관련되어 있지만 LINQ to SQL은 더 유연한 솔루션이며 구현하기도 가장 쉽습니다.

다른 팁

빛의 속도 지정할 수 있습니다. I명명 전략 이를 통해 런타임에 테이블 이름을 동적으로 확인할 수 있습니다.

테이블 접두사를 사용하는 대신에 schema (MS Sql 2005 이상).

이는 다음을 의미합니다.

select * from dbo.clientAProduct
select * from dbo.clientBroduct

당신은:

select * from clientA.Product
select * from clientB.Product
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top