2011-05-13 2 views
0

Castle ActiveRecord를 사용하여 데이터베이스 액세스를 재구성합니다. 나는 blog/post 예제를 통해 일이 어떻게 이루어지는 지에 대한 느낌을 갖기 위해 노력했지만, HasMany 속성에 관한 한 가지 필수적인 질문이 있습니다.성 ActiveRecord HasMany 속성

클래스 블로그 :

[ActiveRecord] 
public class Blog : ActiveRecordBase 
{ 
    private int id; 
    private IList posts = new ArrayList(); 

    public Blog() 
    { 
    } 

    [PrimaryKey] 
    public int Id 
    { 
     get { return id; } 
     set { id = value; } 
    } 

    [HasMany(typeof(Post), Table="Posts", ColumnKey="blogid", 
     Inverse=true, Cascade=ManyRelationCascadeEnum.AllDeleteOrphan)] 
    public IList Posts 
    { 
     get { return posts; } 
     set { posts = value; } 
    } 
} 

클래스 포스트 : 지금 블로그를 작성하고이 블로그에 어떤 글을 추가 할 때

[ActiveRecord] 
public class Post : ActiveRecordBase 
{ 
    private int id; 
    private String contents; 
    private Blog blog; 

    public Post() 
    { 
    } 

    [PrimaryKey] 
    public int Id 
    { 
     get { return id; } 
     set { id = value; } 
    } 

    [Property(ColumnType="StringClob")] 
    public String Contents 
    { 
     get { return contents; } 
     set { contents = value; } 
    } 

    [BelongsTo("blogid")] 
    public Blog Blog 
    { 
     get { return blog; } 
     set { blog = value; } 
    } 
} 

, 왜 Blog.Posts의 모음입니다 다음 예를 참조하십시오 자동 업데이트되지 않습니까? 이것은 코드입니다 :

using (new SessionScope()) 
{ 
    Blog b = new Blog(); 
    b.Save(); 

    Post p = new Post(); 
    p.Blog = b; 
    p.Save(); 

    //Here, b.Posts is empty, but shouldn't it contain a reference to p? 
} 

이 동작을 방지하기 위해 수행 할 수있는 작업은 무엇입니까? 게시물을 수동으로 컬렉션에 추가해야합니까? 가장 좋은 방법은 무엇입니까?

TIA

답변

2

당신은 당신이 데이터베이스에서 블로그 개체를 다시로드하지 않는 한

using (new SessionScope()) 
{ 
    Blog b = new Blog(); 

    Post p = new Post(); 
    p.Blog = b; 

    b.Posts.Add(p); 

    b.Save(); 
} 

게시물 모음이 자동으로 업데이트되지 않는 블로그 개체의 게시물 속성에 게시물을 추가해야합니다.

관련 문제