Fluent nHibernate utilisant nHibernate v. 2.1.2.4, nHibernate.Linq v. 1.1.0.1001 et Fluent NHibernate v. 1.1.0.685.LINQ to NHibernate: impossible de résoudre la propriété
J'ai un objet de domaine avec un champ DateTime appelé DateOfEvent. Ceci est un champ date/heure réel dans la base de données. J'ai également ajouté 2 nouvelles propriétés YearOfEvent qui saisit l'année à partir du champ DateOfEvent ainsi que MontOfEvent qui récupère le mois à partir du champ DateOfEvent.
public class Event
{
public Event() { }
public virtual Int32 Id { get; set; }
public virtual String Title { get; set; }
public virtual DateTime DateOfEvent { get; set; }
public virtual Int32 YearOfEvent
{
get { return DateOfEvent.Year; }
}
public virtual Int32 MonthOfEvent
{
get { return DateOfEvent.Month; }
}
public virtual String Location { get; set; }
public virtual String City { get; set; }
public virtual String State { get; set; }
public virtual String Zip { get; set; }
public virtual String Description { get; set; }
public virtual Boolean HasImage { get; set; }
public virtual Boolean IsActive { get; set; }
}
Cependant, lors de l'exécution de cette méthode:
public IList<Event> GetActiveEvents(int pageNumber, int pageSize, out int totalItems)
{
Int32 skip = Misc.NumberToSkip(pageNumber, pageSize);
totalItems = (from e in _session.Linq<Event>()
where e.IsActive
select e).Count();
return (from e in _session.Linq<Event>()
where e.IsActive
select e)
.Skip(skip)
.Take(pageSize)
.ToList();
}
NHibernate.QueryException: ne pouvait pas résoudre la propriété: YearOfEvent de: .... événement
FWIW, j'ai floutées la Nom du projet. ;)
Une idée de comment obtenir cette requête de travail?
Merci! -Steve
EDIT: Voici mon mapping class:
public class EventMap : ClassMap<Event>
{
public EventMap()
{
Table("tbl_event");
Id(x => x.Id, "eventId");
Map(x => x.DateOfEvent, "dateOfEvent");
Map(x => x.Description, "description");
Map(x => x.Title, "title");
Map(x => x.Location, "location");
Map(x => x.State, "state");
Map(x => x.City, "city");
Map(x => x.Zip, "zip");
Map(x => x.HasImage, "hasImage");
Map(x => x.IsActive, "isActive");
}
}
... et ma config:
public Configuration GetConfiguration()
{
Configuration configuration;
var assembly = Assembly.Load(".....Data");
var fluentConfig = Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(
c => c.FromConnectionStringWithKey("......")
))
.Mappings(m => m.FluentMappings.AddFromAssembly(assembly));
configuration = fluentConfig.BuildConfiguration();
configuration.Properties.Add("hbm2ddl.keywords", "none");
return configuration;
}
Je viens aussi essayé l'API Critères:
return _session.CreateCriteria(typeof (Event))
.Add(Expression.Eq("IsActive", true))
.Add(Expression.Eq("YearOfEvent", year))
.List<Event>();
Pas de travail non plus.
Postez vos mappings –
Étrange. Cela me semble bien, je me demande si c'est peut-être le fournisseur LINQ qui essaie de faire quelque chose de fantaisie avec les propriétés. Avez-vous essayé d'exécuter la même requête sans LINQ? – Phill
Phill, vient d'essayer (posté la requête) en utilisant l'API Criteria. Même exception – StephenPAdams