2008-08-14 2 views
4

위키 또는 포럼 또는 블로깅 소프트웨어와 같은 웹 응용 프로그램에서 데이터를 관계형 데이터베이스에 저장하는 것이 유용합니다. 많은 호스팅 업체가 호스팅 계획을 가지고 단일 데이터베이스를 제공하기 때문에 (추가 데이터베이스 비용이 추가로 필요) 데이터베이스 개체 (테이블, 뷰, 제약 조건 및 저장 프로 시저)에 공통 접두사가있는 경우 사용자에게 매우 유용합니다. 일반적으로 데이터베이스 부족을 인식하는 응용 프로그램에는 하드 코딩 된 테이블 접두사가 있습니다. 그러나 나는 더 많은 것을 원합니다. 특히, 사용자가 —을 지정할 수있는 테이블 접두사를 web.config 파일에 넣고 싶습니다 (물론 적절한 기본값 포함).구성 가능한 테이블 접두어 .Net OR/M?

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

필자가 지금까지 생각해 낼 수 있었던 가장 좋은 점은 LINQ를 SQL에 외부 매핑 파일과 함께 사용하는 것입니다. 즉, 가상의 web.config 설정에 기반하여 업데이트해야합니다.

누구나 더 나은 해결책이 있습니까? Entity Framework에서이 작업을 수행하려고 시도했지만 빠르게 엉망이되었습니다. (EF에 익숙하지 않아서 가능할 수도 있습니다.) SubSonic은 어떻습니까? 코드 생성 시간 외에도 테이블 접두어를 적용 할 수 있습니까?

답변

2

지금은 SQL과 documented the steps required in each에 엔티티 프레임 워크 및 LINQ 모두에서이 작업을 수행하는 데 걸리는 무엇을 연구했습니다. 여기있는 대답보다 훨씬 길기 때문에 여기에 답장하는 대신 답변에 대한 링크가 붙어 있습니다. LINQ to SQL은보다 유연한 솔루션이며 가장 쉬운 방법입니다.

1

LightSpeed은 런타임에 테이블 이름을 동적으로 확인할 수있는 INamingStrategy을 지정할 수 있습니다.

1

대신 테이블 접두어를 사용하는 대신 schema (MS Sql 2005 이상)에 속한 응용 프로그램 사용자가 있어야합니다.

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

당신은이 :

이는 대신 것을 의미

select * from clientA.Product 
select * from clientB.Product