J'utilise ASP.NET MVC2 avec EF4. J'ai besoin de créer des POCOs pour deux de mes classes PersonP et AddressP, qui correspondent à leurs classes 'complexes' EF4 (qui incluent des choses comme les propriétés de navigation et OnPropertyChanged()). Mapper juste PersonP fonctionne très bien, mais PersonP contient AddressP (clé étrangère) - comment est-ce que je fais correspondre ceci à l'aide d'une expression IQueryable?IQueryable Entity Framework Mappages POCO
Voici ce que j'ai essayé:
class AddressP
{
int Id { get; set; }
string Street { get; set; }
}
class PersonP
{
int Id { get; set; }
string FirstName { get; set; }
AddressP Address { get; set; }
}
IQueryable<PersonP> persons = _repo.QueryAll()
.Include("Address")
.Select(p => new PersonP
{
Id = p.Id,
FirstName = p.FirstName,
//Address = p.Address <-- I'd like to do this, but p.Address is Address, not AddressP
//Address = (p.Address == null) ? null :
//new AddressP <-- does not work; can't use CLR object in LINQ runtime expression
//{
// Id = p.Address.Id,
// Street = p.Address.Street
//}
});
Sans
.Include("Address")
je ne voudrais pas récupérer quoi que ce soit de la table d'adresses est correcte?Comment puis-je la carte
Address
-AddressP
à l'intérieurPersonP
, en utilisant l'instructionSelect()
ci-dessus?
Merci.
Merci pour votre réponse, c'est exactement ce que je cherchais. Malheureusement, je dois le garder comme IQueryable parce que je dois appliquer filter/tri/grouping en utilisant une méthode tierce, et le référentiel de personne/adresse peut être énorme - donc je dois le faire avant d'exécuter la requête réelle. Je me pencherai sur le support de POCO EF4. Recommanderiez-vous la solution NHibernate par rapport à cela, selon votre expérience? – John
Je n'avais aucune expérience avec NHibernate, mais je ne pense pas que ce soit différent. Vous pouvez également regarder dans AsQueryable pour voir si vous pouvez l'utiliser mais je pense toujours que POCO est la voie à suivre dans ce scénario. –