У меня есть это отображение:
[Class(Table = "foo", Name = "Foo")]
public class Foo
{
[Id(0, TypeType = typeof(long), Name = "Id", Column = "id")]
[Generator(1, Class = "native")]
public virtual long Id { get; set; }
[ManyToOne(Class = "Bar", Column = "bar_id", NotNull = true)]
public virtual Bar Bar { get; set; }
}
[Class(Table = "bar", Name = "Bar")]
public class Bar
{
[Id(0, TypeType = typeof(long), Name = "Id", Column = "id")]
[Generator(1, Class = "native")]
public virtual long Id { get; set; }
[Bag(0, Inverse = true, Table = "foo", Cascade = "save-update")]
[Key(1, Column = "bar_id", ForeignKey = "fk_foo_bar_id")]
[OneToMany(2, Class = "Foo")]
public virtual IList<Foo> Foos { get; set; }
}
, и я хотел бы сделать запрос SQL:
SELECT bar_id FROM foo f WHERE f.id = 1
Я знаю, что могу сделать
Session.Get<Foo>(1).Bar.Id
тем не менее, он загружает объект Bar
и, если это очень объект HEAVY , мой простой запрос, который требует только того, что находится внутри таблицы foo
, очень медленный.Как мне это сделать?
Я думал о добавлении свойства, подобного этому
[Property(Column = "bar_id", NotNull = true)]
public virtual long BarId { get; set; }
Но я не знаю, является ли оно неправильным или нет, или мне следует сделать это иначе.