У меня есть базовая настройка сущности:
public class Instrument
{
public virtual int Id { get; set; }
public virtual Guid? InstrumentGuid { get; set; }
public virtual string FIPSCode { get; set; }
public virtual IList Names {get; set;}
}
public class Name
{
public virtual int Id {get; set;}
public virtual string Name {get; set;}
public virtual Instrument Instrument {get; set;}
}
Отображения:
public class InstrumentMap: ClassMap<Instrument>
{
public InstrumentMap()
{
Id(x => x.Id);
Map(x => x.InstrumentGuid).Not.Nullable();
Map(x => x.FIPSCode).Not.Nullable();
HasMany(x => x.Names).Casecade.All;
}
}
public class NameMap : ClassMap<Name>
{
public NameMap()
{
Id(x => x.Id);
Map(x => x.Name);
References(x => x.Instrument);
}
}
Так почему же, когда я выполняю эти два запроса, я получаю разные результаты?
var namelist = from name in Session.Linq()
where name.Instrument.Id == 1
select name;
Я получаю 3 результата, 2 где Instrument.Id = 1 и 1, где Instrument.Id = 4 против:
var querystr = "select name From Name as name where name.Instrument.Id = 1";
var hqlresult = Session.CreateQuery(querystr).List();
Это дает только 2 результата, где Instrument.Id = 1.
Может ли кто-нибудь объяснить, откуда происходит Id = 4 в запросе Linq, или NHibernate.Linq еще не совсем стабилен?
Спасибо!