Linq To Entites Fehler: Die Entität oder komplexer Typ ... kann nicht konstruiert werden, in eine LINQ to Entities-Abfrage
Ich habe mein Haar ziehen zu versuchen, MVC 3-Music Store-tutorial finden Sie auf der asp.net website.
Im folgenden code versuche ich die Verwendung einer Linq to Entities-Abfrage, um Ergebnisse zu meiner Ansicht "Durchsuchen" aus dem storeController aber ich erhalte diese Fehlermeldung, wenn ich navigieren Sie zu der Seite "durchsuchen":
Die Person oder komplexen Typ 'MvcMusicStore.Modelle.Genre " kann nicht konstruiert werden, in eine LINQ to Entities-Abfrage.
Den code unten funktioniert, wenn ich den Lambda-Ausdruck, der von Ihnen im tutorial, aber ich bin noch komfortabler mit einer Linq-Abfrage. Bitte kann mir jemand erklären warum das nicht funktioniert mit dem folgenden code?
Storecontoller.cs
MusicStoreEntities storeDB = new MusicStoreEntities();
public ActionResult Browse(string genre)
{
//working code used in tutorial
//var genreModel = storeDB.Genres.Include("Albums")
//.Single(g => g.Name == genre);
storeDB.Genres.Include("Albums");
var genreModel = from p in storeDB.Genres
where p.Name == genre
select new Genre
{
GenreId = p.GenreId,
Name = p.Name,
Description = p.Description,
Albums = p.Albums
};
return View(genreModel.Single());
}
Genre.cs
using System.Collections.Generic;
namespace MvcMusicStore.Models
{
public class Genre
{
public int GenreId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<Album> Albums { get; set; }
}
}
MusicStoreEntities.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace MvcMusicStore.Models
{
public class MusicStoreEntities : DbContext
{
public DbSet<Album> Albums { get; set; }
public DbSet<Genre> Genres { get; set; }
}
}
durchsuchen.cshtml
<h2>Browsing Genre: @Model.Name</h2>
<ul>
@foreach (var album in Model.Albums)
{
<li>
@album.Title
</li>
}
</ul>
Vielen Dank
verzweifelt dave
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie dieses verwenden:
Include
muss Teil der Abfrage. Aufruf im Voraus, funktioniert nicht. Sie können dies tun:Auch Sie können nicht erstellen Sie-Projektion zu entity-Klasse (
new Genre
). Sie müssen es auswählen, direkt.