Однозначное сопоставление NHibernate, когда данные второй таблицы могут быть нулевыми

Надеюсь, это заставит вас начать

Смотрите его в прямом эфире на http://ideone.com/l23He (используя stdin)

#include 
#include 
#include 

const char* getfield(char* line, int num)
{
    const char* tok;
    for (tok = strtok(line, ";");
            tok && *tok;
            tok = strtok(NULL, ";\n"))
    {
        if (!--num)
            return tok;
    }
    return NULL;
}

int main()
{
    FILE* stream = fopen("input", "r");

    char line[1024];
    while (fgets(line, 1024, stream))
    {
        char* tmp = strdup(line);
        printf("Field 3 would be %s\n", getfield(tmp, 3));
        // NOTE strtok clobbers tmp
        free(tmp);
    }
}

Выход:

Field 3 would be nazwisko
Field 3 would be Kowalski
Field 3 would be Nowak

11
задан SteveBering 28 October 2008 в 20:46
поделиться

2 ответа

Один к одному отображению в nhibernate не работает способ, которым Вы думаете, что это делает. Это разработано так, чтобы у Вас было два класса, которые при сохранении к их соответствующим таблицам имеют те же первичные ключи.

Однако можно заставить его работать, но это не симпатично. Я покажу Вам, как затем предлагают некоторые альтернативы:

В Вашей Транзакции hbml:

<one-to-one name="Sequence" class="TransactionSequence" property-ref="Transaction"/>

В Вашем HTML Последовательности:

<many-to-one name="Transaction" class="Transaction" column="fk_Transaction_Sequence" />

Это должно сделать то, что Вы хотите, чтобы это сделало. Отметьте свойство - касательно.

Следующий вопрос, на котором Вы собираетесь отправить, собирается спросить, как Вы получаете ленивую загрузку на однозначных связях. Ответ, Вы не можете... хорошо, Вы можете, но он, вероятно, не будет работать. Проблема состоит в том, что у Вас есть свой внешний ключ на таблице последовательности, что означает, что nhibernate должен поразить базу данных, чтобы видеть, существует ли цель. Затем можно попытаться играть вокруг с ограниченным = "истинный/ложный", чтобы видеть, можно ли убедить это лениво загрузить однозначную связь.

В целом, это собирается привести к общей пустой трате Вашего времени.

Я предлагаю также:

  1. Имейте две many-one ассоциации.
  2. Имейте many-one связь с набором на другом конце.

Это сохранит Вас много головных болей в конечном счете.

15
ответ дан 3 December 2019 в 07:14
поделиться

Оказывается этим для моей ситуации a <join table> отображение работало лучше всего. Я просто должен был удостовериться, что сделал свойства, которые прибыли из второй таблицы, были nullable типы, или она сделает вставку на сохранении, даже если ничто не изменилось. Так как мне не была нужна ленивая загрузка для второй таблицы, это работает отлично. Я уверен, что, возможно, заставил парные many-one отображения работать, но это не было интуитивно и кажется более сложным, чем опция объединяющей таблицы, однако <join table> только доступно в NHibernate 2.0 и.

2
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: