0
나는 다음과 같은 수업을
을 통해 개체의 부모에 접근 :자 NHibernate는 - ID 또는 객체 참조
public class Parent
{
public virtual int ParentId { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
public class Child
{
public virtual int ChildId { get; set; }
public virtual string Name { get; set; }
//public virtual int ParentId { get; set; }
public virtual Parent Parent { get; set; }
}
이러한 클래스는 일대 다 관계에있는 데이터베이스에 해당 테이블에 매핑됩니다. 내 매핑 클래스에서, 나는 다음을 수행하십시오
using FluentNHibernate.Mapping;
public partial class ParentMap : ClassMap<Parent>
{
public ParentMap()
{
Id(p => p.ParentId).Column.("PARENT_ID").GeneratedBy.Native();
Map(p => p.Name).Column("PARENT_NAME").Not.Nullable();
HasMany<Child>(p => p.Children).Cascade.All().LazyLoad().Inverse().AsSet();
}
}
public partial class ChildMap : ClassMap<Child>
{
public ChildMap()
{
Id(c => c.ChildId).Column("CHILD_ID").GeneratedBy.Native();
Map(c => c.Name).Column("CHILD_NAME").Not.Nullable();
References<Parent>(c => x.Parent).Column("PARENT_ID").Not.LazyLoad().Not.Nullable();
}
}
나는이 작업을 수행 할 수 있도록 하위 클래스에서 노출 (위의 클래스 정의의 행의 주석을 해제)하는 ParentId 속성을 할 수있을 필요가있는 무엇 다음
입니다var child = new Child();
child.ParentId = 1;
, 나는 여전히 child.Parent 속성을 통해 부모에 액세스 할 수있는 동안 child.ParentId 속성을 통해 아이에게 부모를 부착 할 수 있어야합니다. 예 :
// i currently have to do the following in order to link the child with
// the parent when I update an existing Child instance (ParentService() and
// ChildService() are service classes that sit between my applications and
// NHibernate).
var parentService = new ParentService();
var parent = parentService.GetById(1);
var child = new Child() { ChildId = 2, Parent = parent, Name = "New Name" };
var childService = new ChildService();
childService.Save(child);
// in a different project, i access the Parent object via the child's
// Parent property
var childService = new ChildService();
var child = childService.GetById(2);
Console.WriteLine(child.Parent.Name);
// i want to do this instead
var child = new Child() { Id = 2, ParentId = 1, Name = "New Name" };
var childService = new ChildService();
childService.Save(child);
Console.WriteLine(child.Id); // 11
// [ ... ]
var childService = new ChildService();
var child = childService.GetById(2);
Console.WriteLine(child.Parent.Name);
어떻게해야 매핑이 변경 될까요? TIA, NHibernate에의 올바른 사용법이 아니다
랄프 톰슨
사용
부모 사용의 ID를 얻으려면. 나는 그걸 가지고 놀아야하고 그것을 어떻게 사용할 수 있는지보아야 할 것입니다. 고맙습니다. –