Беглую иерархию таблиц для каждого класса нужно использовать .Where ()?

У меня есть следующее отображение для набора классов контактов, основанных на абстрактной реализации класса контактов.

   public class ContactMapping : ClassMap<Contact> {
        public ContactMapping() {
            Id(x => x.Id).GeneratedBy.GuidComb();
            Map(x => x.CreatedDate).Not.Nullable();
            Map(x => x.Value).Not.Nullable();
            Map(x => x.Level).Not.Nullable();
            Map(x => x.Comments);
            DiscriminateSubClassesOnColumn("ContactType");
        }
    }

    public class PhoneContactMapping : SubclassMap<PhoneContact> {
        public PhoneContactMapping() {
            Map(p => p.PhoneType);
            DiscriminatorValue("PhoneContact");
        }
    }
    public class EmailContactMapping : SubclassMap<EmailContact> {
        public EmailContactMapping() {
            DiscriminatorValue("EmailContact");
        }

    }
    public class WebsiteContactMapping : SubclassMap<WebsiteContact> {
        public WebsiteContactMapping() {
            DiscriminatorValue("WebsiteContact");
        }
    ,}

У меня есть класс сущности HasMany EmailContact (s), WebsiteContact (s) и PhoneContact (s).

public class ContactableEntityMapping: ClassMap<ContactableEntity> {
    public ContactableEntityMapping() {
        Id(x => x.Id).GeneratedBy.GuidComb();
        Map(x => x.CreatedDate).Not.Nullable();
        Map(x => x.Comment);
        HasMany<EmailContact>(x => x.EmailContacts).AsBag().Not.LazyLoad().Where("ContactType='EmailContact'");
        HasMany<PhoneContact>(x => x.PhoneContacts).AsBag().Not.LazyLoad().Where("ContactType='PhoneContact'");
        HasMany<WebsiteContact>(x => x.WebsiteContacts).Not.LazyLoad().AsBag().Where("ContactType='WebsiteContact'");
        HasManyToMany(x => x.Addresses).AsSet();
    }
}

Если я не укажу там предложения .Where (), класс в конечном итоге возвращается со всеми строками, сопоставленными с EmailContact (поскольку он первый в списке), если используется LazyLoading, и если не используется отложенная загрузка, я получаю исключение как он пытается привести классы к неправильному типу.

Очевидно, это потому, что выполняемый SQL не передается в дополнительном предложении where, если я не укажу его в отображении. Я что-то упускаю в своем отображении, или беспорядок Where - это то, с чем нам нужно жить?

Спасибо за помощь!

Ответы на вопрос(0)

Ваш ответ на вопрос