2011-03-14 6 views
1

이것은 생각을 입력 질문에 대한 일종의입니다.LazyLoad and ConnectionString

모든 클래스를 처음부터 코딩합니다. 비즈니스 인스턴스의 경우 connectionstring은 생성자의 일부입니다. 대개 유일한 생성자 매개 변수이기 때문에 간단합니다. 데이터베이스에서 레코드를로드하고 엔티티 객체에 저장하면 ... 어떻게 연결 문자열을 기억해야합니까? 이것은 lazyload 목적입니다. 우리는 동일한 기본 데이터베이스 유형의 더 많은 데이터베이스 인스턴스에 대해 이야기하고있을 수 있습니다. 우리는 기록을 어디에서 얻었는지 알 필요가 있고 관련 객체를 어디에서 lazyload 할 것인지를 알아야합니다.

나는 간단한 질문처럼 들린다. 우리는 코드 avoid을 피하려고 노력하고 있습니다.

강제로 설정하려고하는 모든 생성자에서 연결 문자열을 문자열로 설정합니까? 엔티티를로드 한 비즈니스 객체에 대한 참조를 저장합니까? 한편, 일부 경우 XML에서 비 직렬화 할 때 빈 생성자가 필요하다고 생각합니다.

경험이 없지만 공장을 생각해보십시오. 새로운 엔티티 객체를 얻으려면 연결 스트링을 증명해야하는 팩토리를 통과해야합니다.

이것은 설명 된 API가 아니며 팀이 올바르게 구현하고 채택하기위한 것입니다.

일부 링크/코드 샘플도 훌륭합니다. 감사합니다

답변

1

이 Entity Framework입니까? POCO를 사용하고 있습니까? EF의 지연로드 기능을 활용할 수 있습니까? 그것은 당신이와 연결되어 어떤 데이터베이스 컨텍스트를 요청할 수 있습니다 가치가 무엇인지에 대한

:하지만 아마 도움이되지 않습니다

EntityConnection connection = myContext.Connection as EntityConnection; 

if (connection != null) 
    string db = connection.StoreConnection.Database; 

.

+0

감사합니다. 우리는 처음부터 모든 엔티티를 코딩하고 있습니다. 사용 된 프레임 워크가 없습니다. –

+0

아, 그 경우에는 다른 ORM이 어떻게 처리하는지 살펴보십시오. EF는 기능으로 지연로드를 가지고 있으므로 생성하는 엔티티 프록시는 연결되어있는 DB를 알고 있습니다. 아마 그들이 그것을 어떻게 (또는 다른 어떤 ORM이 그것을했는지) 조사하면 단서를 얻을 수 있습니다. –

+0

올바른 방향으로 우리를 조종 해 주신 것에 대해 감사드립니다. 우리는 모든 생성자에 connectionstring을 포함시키고 XmlIgnore를 사용하여 기본 클래스의 속성으로 connectionstring을 포함하기로 결정했습니다. 또한 비 직렬화 할 때 CS를 설정합니다. 지금 당장 지저분 해 보이지만 우리가 갈 때 리팩터링 할 것입니다. –

관련 문제