hibernate映射问题

时间:2010-10-16 06:18:07

标签: c# nhibernate

我有一个名为party的对象,另外三个对象继承自这个对象,使用hibernate az orm我有一个问题就是将聚会转换为这些对象的ine。虽然我正在使用not.lazyload()功能,但我看到partyProxy想要被转换为部门对象,而不是精确的聚会对象。所以我明白了: 无法将“PartyProxybc26f81f729145c49bc14594bb84cb57”类型的对象转换为“Domain.OrganizationStructure.Department”类型 这个问题不会发生在从party对象继承的其他2个对象上。 可能是我的问题

2 个答案:

答案 0 :(得分:0)

PartyProxy将是Party的子类。您可能正在尝试将其分配给Department类型的变量。如果您共享代码/映射的片段

,将会很有帮助

答案 1 :(得分:0)

这是我正在使用的代码:

公共类AccountabilityMap:ClassMap     {         公共责任地图()         {             架构( “organizationstructure”);             Not.LazyLoad();             Id(p => p.Id);

        References(p => p.AccountabilityType)
            .Not.Nullable();

        References(p => p.Child)
            .Column("ChildPartyId")
            .Not.LazyLoad()
            .Not.Nullable();

        References(p => p.Parent)
            .Column("ParentPartyId")
            .Not.LazyLoad()
            .Not.Nullable();
    }
} 

公共类PartyMap:ClassMap     {         公共PartyMap()         {             架构( “organizationstructure”);

        Id(p => p.Id);

HasMany(p => p.Children)                 .LazyLoad()                 .Cascade.AllDeleteOrphan()                 。逆()                 .KeyColumn( “ParentPartyId”);

        HasMany(p => p.Parents)
            .LazyLoad()
            .Inverse()
            .Cascade.AllDeleteOrphan()
            .KeyColumn("ChildPartyId");

} }

public class DepartmentMap:SubclassMap     {         公共部门地图()         {

        Schema("organizationstructure");
        KeyColumn("PartyId");

        Map(p => p.DepartmentType)
            .Not.Nullable()
            .CustomSqlType("tinyint")
            .CustomType<DepartmentType>()
            .Length(1);

        HasManyToMany(p => p.DepartmentGroup)
            .Table("DepartmentGroupToDepartment")
            .Schema("formation");

   }
}

获取部门:                     _department =家长// =====&gt;家长:IList的                         .Where(p =&gt; p.AccountabilityType.Id ==(int)AccountabilityTypeDbId.ParentDepartmentOfPerson)                         。选择(p =&gt; p.Parent)                         。投()                         .SingleOrDefault();