Как - Простое Присоединение Nhibernate - PullRequest
0 голосов
/ 07 августа 2009

как мне сделать это простое соединение с hbm или свободно, чтобы у меня был такой класс?

public class Pet
{
    public Pet() {}

    public virtual int PetId { get; set; }
    public virtual int PetTypeId { get; set; }
    public virtual string Name { get; set; }
}

CREATE TABLE [dbo].[test_PetTypes](
    [PetTypeId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nchar](10) NOT NULL
) ON [PRIMARY]

CREATE TABLE [dbo].[test_Pet](
    [PetId] [int] IDENTITY(1,1) NOT NULL,
    [PetType] [int] NOT NULL
) ON [PRIMARY]

SELECT     dbo.test_Pet.*, dbo.test_PetTypes.Name
FROM         dbo.test_Pet INNER JOIN
                      dbo.test_PetTypes ON dbo.test_Pet.PetType = dbo.test_PetTypes.PetTypeId

1 Ответ

1 голос
/ 10 августа 2009

В этой ситуации требуется набор с отображением «один ко многим» от test_PetType до test_Pet. Вам не нужны поля идентификаторов в вашем классе, если вы особенно не хотите манипулировать ими вручную (NHibernate должен обработать это для вас). Есть отличное сообщение от Ayende (один из авторов NHibernate) здесь .

Я думаю, что основной смысл вашего НВМ (адаптированный из поста Айенде) должен быть примерно таким:

<set name="Pets" table="test_PetTypes">
    <key column="PetId"/>
    <one-to-many class="Pet"/>
</set>

У меня нет возможности проверить это в данный момент, поэтому я не могу проверить сценарий. Вы можете обойтись без тега <set /> и вместо этого добавить отображение на более высоком уровне, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...