NHibernate Mapping - много-к-одному через таблицу - PullRequest
0 голосов
/ 31 августа 2010

Я работаю с существующей базой данных, которая имеет следующую структуру. Изменение схемы базы данных является последним средством.

Products
   Id
   Name

ParentProducts
   ParentId
   ChildId

Мне не нужна сущность для ParentProducts, у меня есть следующее для свойства children (все еще нужно проверить его, но это концепция).

<bag name="Children" lazy="true" table="dbo.ParentProducts" cascade="save-update" inverse="true" >
   <key column="[ChildId]"></key>
   <many-to-many column="[ProductId]" class="Product" />
</bag>

С чем я борюсь, это как создать свойство Parent? Я хотел бы сделать что-то вроде следующего, но таблица не является допустимым атрибутом для многих к одному.

<many-to-one name="Parent" column="[ParentId]" table="dbo.ParentRelated" class="Policy" />

Я мог бы создать сумку и только взглянуть на первый предмет, но это скорее хак.

Есть идеи? Спасибо

1 Ответ

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

Создание сумки - самое простое решение.И вы можете дать ему чистый интерфейс:

protected virtual ICollection<Product> Parents { get; set; }

public virtual Product Parent
{
    get
    {
        return Parents.SingleOrDefault();
    }
    set
    {
        Parents.Clear();
        Parents.Add(value);
    }
}

При этом остальной код не должен знать о структуре DB / mapping.

...