Используя fluent-nhibernate, возможно ли автоматизировать объект (ы) значения внутри сущности? - PullRequest
3 голосов
/ 19 июня 2010

Я использую архитектуру Sharp и имею ряд ситуаций, в которых объекты-ценности используются в сущности.Вот очевидный простой пример:

public class Person : Entity
{
    protected Person(){}

    public Person(string personName)
    {
        this.PersonName = personName;
    }

    public virtual string PersonName { get; protected set;}
    public virtual StreetAddress MailingAddress { get; set; }
}

public class StreetAddress : ValueObject
{
    protected StreetAddress(){}

    public StreetAddress(string address1, string address2, string city, string state, string postalCode, string country )
    {
        this.Address1 = address1;
        this.Address2 = address2;
        this.City = city;
        this.State = state;
        this.PostalCode = postalCode;
        this.Country = country;
    }

    public virtual string Address1 { get; protected set; }
    public virtual string Address2 { get; protected set; }
    public virtual string City { get; protected set; }
    public virtual string State { get; protected set; }
    public virtual string PostalCode { get; protected set; }
    public virtual string Country { get; protected set; }
}

Это, конечно, выдает:

An association from the table Person refers to an unmapped class: Project.Domain.StreetAddress
, потому что AutoPersistenceModelGenerator включает только классы с типом IEntityWithTypedId <>.Непонятно, как Sharp Architecture ожидает реализации этого общего условия.Это должно быть обработано с переопределением bazillion?

Ответы [ 3 ]

4 голосов
/ 23 июня 2010

Вы можете изменить метод GetSetup () в AutoPersistenceModelGenerator на что-то вроде:

private Action<AutoMappingExpressions> GetSetup()
    {
        return c =>
                   {
                       c.IsComponentType = type => type.BaseType == typeof (ValueObject);
                   };
    }

Я попытаюсь получить пост, который я видел, покрывающий это, отправленный за кредит.

3 голосов
/ 22 июня 2010

Вы хотели бы отобразить это как компонент. Для этого вы можете использовать переопределения сопоставления в Fluent NHibernate.

1 голос
/ 31 августа 2010

Я согласен с Алеком.Я бы отобразил это как компонент.

Для получения дополнительной информации см. Следующий вопрос:

Автоматическое отображение составного элемента в Fluent Nhibernate

Там вы также найдете информацию о том, как отобразить коллекцию составных элементов.

...