nHibernate 2.1: сохранить новую сущность в - PullRequest
0 голосов
/ 24 декабря 2010

Ну, это сводит меня с ума, я не могу понять, почему это происходит.У меня есть метод для сохранения списка JobExperiences, и JobExperience имеет отношение к компании.Проблема в том, что я пытаюсь создать новую компанию внутри foreach и сохранить ее, но nHibernate пытается также сохранить JobExperience ... и он не ссылается на JobExperience !.Вот мой код:

 foreach (JobExperience exp in expList)
 {
    if (exp.Company.IsNew)
    {
        try
        {
            Company c = new Company();
            c.Name = "CompanyTest";

            companyService.Save(c); //throws an exception!
        }
        catch (Exception ex)
        { 

        }
    }

Итак, в этой строке пытается сохранить JobExperience, и он показывает исключение, потому что это несохраненный.Но, если я попробую это:

try
{
    Company c = new Company();
    c.Name = "CompanyTest";

    companyService.Save(c);
}
catch (Exception ex)
{

}

foreach (JobExperience exp in expList)
{
//[... code excluded for abbreviation ]

Это работает !, и оно не пытается сохранить какой-либо JobExperience! ....

Есть мысли, почему это происходит?

1 Ответ

1 голос
/ 25 декабря 2010

Похоже, что отношения между в настоящее время являются обязательными, и у вас есть два основных варианта:
1) если в вашей системе возможно иметь JobExperience без компании, вы можете просто изменить отображение отношений на необязательноесказав not-null = "true в вашем hbm (или эквивалентном в некотором беглом инструменте картирования, если вы его используете).
2) если отношения должны быть обязательными, вы должны сначала спасти компанию.1004 * HTH,
Berryl

...