Непростая проблема отображения Nhibernate - PullRequest
1 голос
/ 31 марта 2010

Я довольно новичок в nhibernate и свободно владею nhibernate, у меня проблема с привязкой коллекции к запросу. В базе данных у меня есть скважина и 4 связанных AFE. У меня проблема в том, что коллекция AFE не заполняется правильно. Независимо от того, что я делаю, я получаю 4 AFE в коллекции, но они все один и тот же объект. Есть ли что-то очевидное, что я делаю не так?

Спасибо

PS. У меня нет доступа к базе данных, к которой я обращаюсь, поэтому я не могу изменить базу данных, чтобы сделать это настоящим FK.

Родитель

    public WellHeaderMap()
    {
        Table("Well");
        Id(x => x.PropertyNumber, "WELL_NUMBER");
        Map(x => x.PropertyID, "PROPERTY_ID");
        Map(x => x.Name, "WELL_NAME");

        //AFEs is a IList<AFE>
        HasMany(x => x.AFEs).Inverse().KeyColumn("Property_ID").PropertyRef("PropertyID").Fetch.Join();
    }

Коллекция

    public AFEMap()
    {
        Table("AFE");
        Id(x => x.PropertyID, "PROPERTY_ID");
        Map(x => x.AFETypeID, "AFE_TYPE_CODE");
        Map(x => x.AFENumber, "AFE_NUMBER");
        Map(x => x.IsDeleted, "DELETED_IND");
    }

Запрос

        var wellSearchCriteria = _session.CreateCriteria<WellHeader>()
            .CreateAlias("AFEs", "afe")
            .Add(Restrictions.Eq("PropertyNumber", id.ToString()))
            //.Add(Expression.Eq("afe.AFETypeID", "01"))
            //.Add(Expression.Eq("afe.IsDeleted", "N"));

1 Ответ

0 голосов
/ 31 марта 2010

Я думаю, что у вас неверный идентификатор WellHeader, в настоящее время у вас есть:

Id(x => x.PropertyNumber, "WELL_NUMBER");
Map(x => x.PropertyID, "PROPERTY_ID");

Вероятно, должно быть:

Id(x => x.PropertyID, "PROPERTY_ID");
Map(x => x.PropertyNumber, "WELL_NUMBER");

PropertyNumber и PropertyId были переключены. Однако, не видя вашей схемы, трудно сказать.

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