【发布时间】:2012-03-13 11:25:22
【问题描述】:
我有两个实体类:Person 和 Position。
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 具有一对多关系。我还有一个 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 并用它保存一个人行?
提前致谢。
【问题讨论】:
标签: c# nhibernate dto