ASP.NET MVC 4 verknüpfen von zwei Tabellen
bitte nehmen Sie einen Blick auf meinen code und zeigen Sie mich in die richtige Richtung.
Ich habe 2 Tabellen : - Produkt-und vProductAndDescription. Ich brauche den Namen und LisPrice von Produkt-und der Beschreibung von vProductAndDescription begleitet von Ihren ProductID beziehungsweise. Bin ich auf dem richtigen Weg zur Erreichung dieser meiner Ansicht? Denn bisher ist es nur ein Absturz.
Controller:
public ActionResult Index()
{
string query = "SELECT v.Name, p.ListPrice, LEFT(v.Description, 20) from SalesLT.vProductAndDescription v, SalesLT.Product p WHERE v.ProductID = p.ProductID";
var list = db.Database.SqlQuery<Product>(query);
var result = from a in list.ToList()
join b in db.vProductAndDescriptions on a.ProductID equals b.ProductID
select new
{
c = a.Name,
d = a.ListPrice,
e = b.Description
};
return View(result.ToList());
}
Anzeigen:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table>
<tr>
<th>Name
</th>
<th>Price (R)
</th>
<th>Description
</th>
<th></th>
</tr>
@foreach (var item in ViewData.Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.ListPrice)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
</tr>
}
</table>
- Welche Fehler haben Sie?
- EntityCommandExecutionException war unhandled by user code, Den data reader ist inkompatibel mit dem angegebenen 'AdventureWorksLT2008R2Model.Produkt'. Ein Mitglied der Typ, 'ProductID', nicht über eine entsprechende Spalte in der Daten-Leser mit dem gleichen Namen.
- Das macht absolut überhaupt keinen Sinn für mich, weil es klar und hat eine entsprechende Spalte, das ist klar. Sicherlich gibt es einen einfacheren Weg der Verbindung von zwei Tabellen und zeigt Sie in einer Ansicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihren Anruf
var list = db.Database.SqlQuery<Product>(query);
versuchen, um eine Liste vom TypProduct
aber Ihre eigentliche Abfrage nicht einProductID
parameter notwendig, um denProduct
geben. Auch, welche Art erwarten Sie von der LinieMit zu beginnen, benötigen Sie ein ViewModel zu halten, Ihre Werte, denn Sie sind nicht vorbei an einer ganzen bestehenden Objekt zur Ansicht.
in Ihrem "code Anzeigen" an der Spitze:
in der Abfrage sind Sie eigentlich so 2 Anrufe auf die Datenbank, lassen Sie uns sehen, ob wir re-arrangieren die Dinge zu bekommen, ein Anruf:
1[<>f__AnonymousType4
3[System.String,System.Dezimal-System.String]]', sondern dieses Wörterbuch erfordert ein modellelement des Typs " System.Sammlungen.Generisches.IEnumerable`1[AW_Internet.Modelle.ProdList]'.