2014-07-09 2 views
0

데이터베이스 우선 접근 방식을 사용하여 새 Visual Studio C# 콘솔 응용 프로그램에서 SQL Server 용 OrmLite를 사용해야합니다. POCO 생성 프로세스에 대해 몇 가지 질문이 있습니다.OrmLite - 기존 테이블에서 POCO 생성에 관한 몇 가지 질문

  • 어떻게 특정 스키마를 POCO로 변환하지 않을 수 있습니까? 예를 들어, "dbo"스키마를 완전히 무시하고 싶습니다.

  • 내 데이터베이스의 다른 스키마에 "추적"이라는 테이블이 두 개 있습니다. .tt 파일에서 테이블을 제외 할 때 :

    테이블 [ "Tracking"]. Ignore = true;

    exclude 문이 여러 테이블과 일치합니다 .tt 파일을 실행할 때 오류가 발생합니다. 이 테이블을 어떻게 제외시킬 수 있습니까?

  • 테이블 및 컬럼 이름에 별명을 사용하고 싶습니다. This page shows how to do that.이 예제에서 .tt 파일은 별칭이 개별 테이블과 열 단위로 주어지기 때문에 필자가 필요로하는 별칭을 제공 할 수 없습니다. .tt 파일에서 생성 된 POCO를 프로젝트의 다른 파일로 복사 한 다음 해당 POCO에 필요한 별칭을 제공해야합니까? OrmLite에서 데이터베이스 우선 접근 방식으로 별칭이 어떻게 작동합니까?

답변

1

처음 두 가지 질문에 답하려면 - .tt 파일의 시작 부분을 보면 코드가 테이블 개체를 통해 반복되어 POCO 클래스를 만드는 방법을 알 수 있습니다.

foreach(Table tbl in from t in tables where !t.Ignore select t) 

당신이 "true"로 설정되어 t.Ignore 속성을 테이블을 통해 루프를하지 않는 것을 볼 수 있습니다 이 라인에서는 루프의 시작을 볼 수 있습니다. 그 LINQ 문 절은 전체 스키마를 무시하는 곳에 당신은 지금처럼에 추가 할 수 있습니다

foreach(Table tbl in from t in tables where !t.Ignore && t.Schema != "dbo" select t) 

을 지금 당신은 당신이 어떤 필터링을 추가 할 수있는 코드의 섹션은 같은 where 절에 필요하다고 이해 :

foreach(Table tbl in from t in tables where !t.Ignore && t.Schema != "dbo" && t.Name != "Tracking" select t) 

"스키마"속성 값이 무엇인지에 관계없이 "추적"이라는 테이블을 무시합니다. IEnumerable ("from t from tables ...")을 별도의 변수로 분해하여 필요할 때마다 복잡하게 만들 수 있고 코드를 읽을 수 있도록 유지하는 것이 더 좋은 방법 일 것입니다. "foreach"안에 추가 "where"절을 추가하면 추악 해집니다.