Ich habe eine ASP.NET MVC-Anwendung, die Entity Framework verwendet, um Daten abzurufen.Wie können Projektionen im Entity Framework wiederverwendet werden?
Ich muss Entitäten zu Modellen transformieren, bevor Sie sie an Ansicht übergeben. Die Vorsprünge können sehr komplex sein, aber es einfach zu halten:
public static IQueryable<UserModel> ToModel(this IQueryable<User> users)
{
return from user in users
select new UserModel
{
Name = user.Name,
Email = user.Email,
};
}
Dies kann in einem Controller wie folgt verwendet werden:
return View(Repository.Users.ToModel().ToList());
Sehr gut. Aber was, wenn ich diese Projektion in einem anderen verwenden möchte? Beispiel:
public static IQueryable<BlogPostModel> ToModel(this IQueryable<BlogPost> blogs)
{
return from blogs in blogs
select new BlogPostModel
{
Title = blog.Title,
Authors = blog.Authors.AsQueryable().ToModel(), // (entities are POCOs)
// This does not work, because EF does not understand method ToModel().
};
}
(nehmen wir an, Blog kann mehr als einen Autor haben und es ist vom Typ Benutzer).
Kann ich die Projektionen irgendwie trennen und in anderen wiederverwenden?
Siehe http: // stackoverflow.com/a/11679134/861716. –