Как вы видите в следующем коде, я закрываю сеанс в методе Save
. Наверное, поэтому AddUserSettings
не работает. Какова наилучшая практика для этой работы? Является ли закрытие сессии Save
методом плохой идеи? На UserSettings
сохранить нет пользователя в БД, но это создает проблему? Как я могу справиться с этим вне сеанса?Работа класса за пределами сеанса
Пользователь
public class User : BaseClass<User>
{
public virtual int UserId { get; set; }
public virtual string UserName { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Email { get; set; }
}
public virtual void AddUserSettings(UserSettings us)
{
us.User = this;
UserSettings = us;
}
UserSettings
public class UserSettings : BaseClass<UserSettings>
{
public virtual int UserSettingsId { get; set; }
public virtual User User { get; set; }
public virtual string FacebookId { get; set; }
public virtual string FacebookToken { get; set; }
}
Сохранить метод
using (var session = NHibernateHelper.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
session.SaveOrUpdate(x);
transaction.Commit();
}
}
Код
user = new Entity.User();
us = new Entity.UserSettings();
us.FacebookId = "foo";
us.FacebookToken = "foo";
user.AddUserSettings(us);
us.Save();
user.UserName = "foo";
user.FirstName = "foo";
user.LastName = "foo";
user.Email= "foo";
user.Save();