J'ai une classeLINQ to NHibernate ne renvoie pas de données adéquates
public class Item : IItem
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual bool IsActive { get; set; }
}
public interface IItem
{
Guid Id { get; set; }
string Name { get; set; }
bool IsActive { get; set; }
}
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.IsActive);
}
}
Dans ma base de données que j'ai créé cinq articles. Trois ont l'indicateur IsActive défini sur true et deux qui l'ont défini sur false.
Lorsque vous utilisez l'interface renvoie les cinq éléments:
var q = from i in session.Linq<IItem>()
where i.IsActive == true
select i;
Cependant, lorsque vous utilisez la classe concrète, il renvoie les trois éléments appropriés:
var q = from i in session.Linq<Item>()
where i.IsActive == true
select i;
EDIT
j'ai serait J'aime retourner une interface, parce que j'ai lu que je devrais retourner des classes non concrètes. S'il vous plaît noter qu'en réalité, ces requêtes Linq sont dans un référentiel dans un projet différent (dans le cas où cela devient une application Web ou WPF)
Votre dernière phrase n'a aucun sens. Vous pouvez très bien sous-classer 'Item' et toujours utiliser le type' Item' pour accéder aux instances de la sous-classe. – Timwi
@Timwi, vous avez raison, je vais modifier pour transmettre correctement l'intention –