Свободное владение NHibernate IList‹string›

У меня есть следующий класс:

public class Address
{
    public virtual int Id { get; private set; }

    public virtual IList<string> AddressLines { get; set; }

    public virtual string CityOrTown { get; set; }

    public virtual string County { get; set; }

    public virtual string Postcode { get; set; }

    public virtual string Country { get; set; }

    public virtual Member Member { get; set; }

    public Address()
    {
        AddressLines = new List<string>();
    }

    public virtual void AddAddressLine(string addressLine)
    {
        AddressLines.Add(addressLine);
    }
}

и следующий класс отображения:

public AddressMap()
{
    Id(x => x.Id);
    HasMany(x => x.AddressLines).Element("AddressLine");
    Map(x => x.CityOrTown);
    Map(x => x.County);
    Map(x => x.Postcode);
    Map(x => x.Country);
    References(x => x.Member);
}

Таблица «addresslines» создается с двумя столбцами «Address_Id» и «AddressLine» с внешним ключом к таблице «address».

По какой-то причине, когда адрес сохраняется, коллекция AddressLines не сохраняется в базе данных;

Я что-то упускаю?

Кажется, не так много информации о отображении IList. Я знаю, что раньше это было невозможно, потому что строка является типом значения, а не типом сущности, но я убежден, что теперь это должно быть возможно?


person Dr. Paul Jarvis    schedule 10.03.2012    source источник


Ответы (1)


Вам необходимо установить каскадное соглашение по умолчанию.

При использовании Automapping это делается следующим образом:

            AutoMap.Assemblies(_assemblies)
                .Conventions.Add(
                    // Do cascading saves on all entities so lists  will be
                    // automatically saved 
                    DefaultCascade.All(),
                );

Насколько я знаю, вы можете сделать то же самое с классами сопоставления, но я не знаю точного синтаксиса.

person Tom Bushell    schedule 12.03.2012