NHibernate를 사용하면 user.AddPost(post)
과 post.setAuthor(user)
이 같은 방식으로 어떻게 동작합니까? 여기 NHibernate의 양방향 one-to-many 연관
var user = new User {
Name = "loki2302",
Age = 100
};
session.Save(user);
var post = new Post {
Text = "qwerty",
Author = user
};
session.Save(post);
은 또한 수에 인가 :
<class name="User" table="users">
<id name="Id" type="int">
<column name="Id" not-null="true" />
<generator class="native"/>
</id>
<property name="Name" column="Name" />
<property name="Age" column="Age" />
<set name="Posts" inverse="true">
<key column="AuthorId" />
<one-to-many class="Post" />
</set>
</class>
<class name="Post" table="posts">
<id name="Id" type="int">
<column name="Id" not-null="true" />
<generator class="native"/>
</id>
<property name="Text" column="Text" />
<many-to-one name="Author" column="AuthorId" class="User" />
</class>
실행중인 코드 (잘 작동) : 여기
public class User
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual int Age { get; set; }
private ICollection<Post> _posts = new HashSet<Post>();
public virtual ICollection<Post> Posts
{
get { return _posts; }
set { _posts = value; }
}
public override string ToString()
{
return string.Format("User{{id={0}, name='{1}', age={2}}}", Id, Name, Age);
}
}
public class Post
{
public virtual int Id { get; set; }
public virtual string Text { get; set; }
public virtual User Author { get; set; }
public override string ToString()
{
return string.Format("Post{{id={0}, text='{1}', author={2}}}", Id, Text, Author);
}
}
내 매핑이 이 접근법을 활성화하십시오 (작동하지 않음) :
var user = new User {
Name = "loki2302",
Age = 100
};
session.Save(user);
var post = new Post {
Text = "qwerty"
};
user.Posts.Add(post);
session.save(user);
?
사용자를 생성하는 것과 같은 과정으로 게시물을 만들려고하십니까? Entity 인 경우 사용자 내부에 Post를 작성합니다. 새 사용자 {.. new Post {} ..} – Independent
@Jonas : NHibernate를 배우기 시작했습니다. 두 가지 접근 방식 모두 컴파일 및 실행이 훌륭하지만 약간의 혼란이 있습니다. 좀 더 구체적으로 말하자면, 두 접근법 모두 잘 동작하도록 만들 필요가 있거나, 두 번째 접근법 (작동하지 않음)은 적어도 런타임 오류를 얻고 싶습니다. 그래서 기대했던대로 동작하지 않습니다. 할 것. – agibalov