私は2つのエンティティクラス、Person
とPosition
を持っています。NHibernateでオブジェクトをフェッチせずにリレーションを設定する
public class Person
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Position Position { get; set; }
}
public class Position
{
public virtual int Id { get; set; }
public virtual string Code { get; set; }
}
Person
Position
と1対多の関係を持っています。私もクライアントから人のデータをもたらすDTO PersonDto
があります。
public class PersonDto
{
public string Name { get; set; }
public int PositionId { get; set; }
}
私はDTOを取得した後、私は新しいPerson
オブジェクトを作成する必要があり、それを持続します。通常は次のようになります。
var person = new Person();
CopyFromDto(person, personDto);
var position = positionRepository.GetById(personDto.PositionId);
person.Position = position;
personRepository.Save(person);
私は、この行を取り除くことができれば、私は疑問に思う:
var position = positionRepository.GetById(personDto.PositionId);
理由は、それがいくつかの位置データをフェッチ不必要なSQLクエリを生成することです。何とかNHibernateに位置IDを提供し、人の行を保存することは可能ですか?
ありがとうございます。