2009-09-13 4 views
1

SubSonic의 스키마 빌더를 사용하여 DB에 이진 열을 어떻게 작성합니까?SubSonic은 DB 스키마, 바이너리 유형을 생성합니까?

그래서 오늘 밤 나는 SubSonic으로 뛰어 들기로 결정했습니다. 나는 여기에 많은 질문을하고 Rob과 많은 다른 사람들에 의해 큰 반응을 보았다. SubSonic이 ORM이라는 것을 알았습니다. T4 Templates를 사용하면 기존 데이터베이스에서 매우 훌륭하고 효율적인 클래스를 생성 할 수 있습니다.

하지만 다른 방법으로 가고 싶습니다. 나는 매우 풍부한 도메인을 가지고 있으며 SubSonic과 RunMigrations 옵션을 사용하여 내 도메인에서 임시 테이블을 만들고 싶습니다.

모두 잘 작동합니다 (심지어 어셈블리 리비전 번호를 기반으로 코드베이스가 변경되었는지 감지하고 DB에 모든 객체 업데이트를 마이그레이션하는 내 업 그레 이드() 기능을 작성했습니다.) - 자동 매끄럽게 업그레이드 할 때 유용합니다. DB).

그러나 어떻게 SubSonic에서 이진 열을 만들 수 있습니까? 어쩌면 내가 의도 한대로 사용하지 않고있다. (Query 또는 SqlQuery를 사용하지 않고 SimpleRepository의 Linq 인터페이스 만 사용한다.) (공통 "블로그 게시물"예를 사용) 아래를 참조 PostType (또는 형식 열거 PostType) 및 이미지 (:

[SubsonicTable] 
public class Post 
{ 
    [SubSonicPrimaryKey] 
    public Int32 PostID { get; set; } 

    [SubSonicStringLength(1024)] 
    public String Title { get; set; } 

    [SubSonicLongString] 
    public String Body { get; set; } 

    [SubSonicStringLength(5)] 
    public String? LangaugeCode { get; set; } 

    public DateTime? Published { get; set; } 

    public PostType PostType { get; set; } 
    public Int32 PostTypeID 
    { 
     get 
     { 
      return this.PostType.GetHashCode(); 
     } 
     set 
     { 
      Enum.Parse(typeof(PostType), value.ToString()); 
     } 
    } 

    public Byte[] Image { get; set; } 
} 

public enum PostType 
{ 
    NotSet = 0 
    ,BlogPost 
    ,Comment 
    ,Trackback 
    ,Pingback 
} 

이 포스트 객체가 두 개의 열이 누락되면, SimpleRepository를 통해, 저장, 또는 쿼리 도착하면 byte [] 배열의 형태)

이제는 누군가가 열거 형 문제를 해결하기 위해 Int32 PostTypeID를 사용하여 게시 한 해킹을 발견했습니다. Rob에게 와서, SubSonic은 INT에 열거 형을 지원할 수 있어야합니다. ;) 이것이 내가 PostTypeID를 가지고있는 이유이며, 이것은 제대로 작성되고 작성됩니다.

Post p = new Post(); 
p.Title = "My Title"; 
p.Body = "The body of the post."; 
p.PostType = PostType.BlogPost; 

var repo = new SimpleRepository(SimpleRepositoryOptions.RunMigrations); 
repo.Add(p); 

참고 : 여기에

는, 나를 위해 포스트 테이블을 생성하는 명령의 예뿐만 아니라 첫 번째 게시물을 삽입의 당신은 많이있는 RunMigrations으로, 생산에이 코드를 사용하지 말아야합니다 처음 실행시 추가 TSQL 쿼리.

위의 예에서 볼 수있는 것처럼 게시 테이블이없는 경우 해당 테이블을 만들 수 있습니다.

그러나 위에서 언급 한 두 개의 열 (PostType 또는 Image)은 생성되지 않습니다.

생각하십니까? 그리고 미리 감사드립니다.

답변

4

저는 으로 생각했습니다. 우리는 이진 스니퍼를 가지고있었습니다. 나는 이것을 추가 할 필요가있다 - 당신이 우리가 갖고있는 것을 포기하고 이것을 추가하는 것을 꺼려한다면 - 나는 당신을 사랑해. 확장 기능에서 전리품을 가져와 - Mod ToBotTable() (내 생각 엔)을 원한다면 ...

기회가 없다면 SimpleRepo를 다음에 올릴 때 이것을 추가 할 것이다 ...

+1

우수 Rob! 프로젝트에 기여할 지 궁금합니다. Linsoft의 버전 인 CreateDatabase()를 대체하기 위해 Subsonic을 찾고 있었는데, 마이그레이션 경로가 없습니다. Enums (int), Xml 등의 다른 열이 있습니다. Linq가 풍부한 지원을합니다. 나는 이것들에 더 가까이서 Subsonic을 조사 할 것이다. :) 감사! – eduncan911

+0

물론 - 우리가 성장하는 방법입니다. :) 주의 : http : //www.subsonicproject.com/docs/Submit_Patch 나는 당신이 줄 수있는 모든 도움을 사용할 수 있습니다 ... –

0

방금 ​​Binary 열 문제가 발생했습니다. 패치/픽스를 가지고 있다면 테스트 해 볼 의향이 있습니다.

+0

기술적으로, 당신은 코멘트를 써야합니다 - 답변을 게시하지 않았습니다. 그러나 새로운 채용 인으로서 귀하는 논평 할 권한이 없습니다. :) 나는 그것이 10 점을 얻은 후에 온다고 생각한다. Anyhoot, 그래, 고쳤지만 Rob C.의 패치를 확인하지 않았다. 내가 찾은 것은 SimpleRepository가 여전히 오래된 Subsonic의 이전 SQL 스크립트를 사용하고 있다는 것이지 - 지금 사용하고있는 새로운 SQL Query Builder가 아닙니다. 이전 물건에 패치를 체크인하기 전에 새로운 물건을 사용하는 스위치가 발생할 때 Rob C에 대해 의견을 말하고 싶었습니다. – eduncan911

+0

감사합니다. 나는 왜 내가 코멘트 할 수 없었는지 궁금해 ... 나는 단지 테스터로 내 이름을 거기에 넣고 싶었다. – Rob