I have  :-

public abstract class Item
    {
        public virtual int Id { get; set; }
    }

public class GeneralItem : Item
    {
        public virtual string Description { get; set; }
    }

public class LegacyItem: Item
    {
        public virtual string Name { get; set; }
    }

 public class Blah
    {
        public virtual Item Item { get; set; }
    }


This is done as Table per subclass inheritance, now when I load an
object of type Blah, Item is a Item Proxy, and there seems to be no
way to recover the original Item  ( either a legacy or general one )

I'm not sure if its a mapping problem?

its mapped like


  public class ItemMap : ClassMap<Entities.Item>
    {
        public ItemMap()
        {
            Table("Items");
            Id(x => x.Id);
        }
    }

    public class GeneralItemMap : SubclassMap<Entities.GeneralItem>
    {
        public GeneralItemMap()
        {
            Table("GeneralItems");
            Map(x => x.Description);
        }
    }

    public class LegacyItemMap : SubclassMap<Entities.LegacyItem>
    {
        public LegacyItemMap()
        {
            Table("LegacyItems");            Map(x => x.Name);
        }
    }


public class BlahMap : ClassMap<Entities.Blah>
    {
        public BlahMap()
        {
            Table("Blahs");
            Id(x => x.Id);
            References(x => x.Item);
        }
    }


I'd like some piece of code to be able to go something like :-


var item = Repository.Items.Get(1);


var legacy = item as LegacyItem;


How can I achieve this?

-- 
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en.

Reply via email to