У меня есть что-то подобное на моей карте
public class Settings : ClassMap<Setting>
{
References(x => x.User).Not.Nullable();
}
Теперь каждый раз, когда я хочу сохранить настройки, я должен предоставить ему объект пользователя, в противном случае я получаю
свойство not-null ссылается на ноль или
переходное значение
Я думал, что, делая это, я навязываю реляционные ограничения. Однако мне кажется странным, что я должен передать весь объект, когда ему действительно нужно просто использовать Fk.
Я надеюсь, что это не повторное сохранение всего этого внутри, а просто добавление Fk для сохранения реляционных ограничений.
Так я правильно это делаю?
Редактировать
public class Settings : ClassMap<Setting>
{
Id(x => x.SettingId);
Map(x => x.Something);
Map(x => x.Something2);
References(x => x.User).Not.Nullable();
}
Public class User: ClassMap<User>
{
Id(x => x.UserId);
Map(x => x.FirstName);
Map(x => x.LastName);
HasOne(x => x.Settings);
HasMany(x => x.AnotherTable);
}
Settings s = new Settings()
{
Something = "142",
Something2 = "1421414"
};
session.Create(s); // this will crash as s.User equals null;
Я должен сделать это
User user = repo.GetUser("userId");
Settings s = new Settings()
{
Something = "142",
Something2 = "1421414",
User = user
};
session.Create(s); // this should work.
Теперь мне интересно, так как я сделал User = user; Nhibernate просто захватывает userId и сохраняет его в настройках tbl, или он проверяет таблицу пользователей на предмет изменений, а затем проверяет «другую таблицу» на предмет изменений?
Или он мгновенно обновляет все поля для пользовательской таблицы и другой таблицы.
Имеет ли это смысл того, что я подразумеваю под спасением всего объекта?