2012-04-04 3 views
1

Ich habe ein Modell mit einer Tabelle namens "Kunden" erstellt.MVC Rückgabeliste der Spalten anders als Full-Modell

Es enthält folgende Felder:

  • CustomerProfileID
  • Kundenname
  • Geburtsdatum
  • Address1
  • Stadt
  • Staat
  • Zip
  • Crea Tedon
  • CreatedBy

Ich habe einen "Function Import" von einer gespeicherten Prozedur (CustomerProfiles_Search), die die Tabelle durchsucht. (Ich kann den Sproc aufgrund von sensiblen Informationen nicht veröffentlichen). Die "Rückgabe einer Sammlung von" ist auf "Entitäten: CustomerProfile" festgelegt. Es gibt die folgenden:

  • Kundenname
  • Geburtsdatum
  • Address1

Jetzt ist hier, wo ich verwirrt. Ich habe meinen Controller, der die Felder zur Suche übergibt und dann an mein "Gateway" weitergibt, das eine Liste zurückgibt.

Mein Controller:

public ActionResult GetRowCount(string CustomerName, string BirthDate, string Address1, string City, string State, string Zip) 
{ 
    List<CustomerProfile> searchResults = CustomerProfileGateway.Search(CustomerName, BirthDate, Address1, City, State, Zip); 

    int count = searchResults.Count(); 
    string rowCount = count.ToString(); 

    if (Request.IsAjaxRequest()) 
     return Content(rowCount); 
    else 
     return RedirectToAction("Index", "OneView"); 
} 

... In meinem CustomerProfileGateway.cs Datei:

public static List<CustomerProfile> Search(string CustomerName, string BirthDate, string Address1, string City, string State, int Zip) 
{ 
    using (ModelEntities context = new ModelEntities()) 
    { 
     return context.CustomerProfiles_Search(CustomerName, BirthDate, Address1, City, State, Zip).ToList(); 
    } 
} 

Allerdings, wenn ich die Ergebnisse in einer Liste ausgegeben versuchen, erhalte ich ein Fehler wenn ich das tue:

The data reader is incompatible with the specified 'SVPModel.CustomerProfile'. A member of the type, 'CustomerProfileID', does not have a corresponding column in the data reader with the same name. 

Ich denke, ich muss ein Modell von dem, was zurückgegeben wird, erstellen.

Ich habe folgendes:

namespace Project.ABC.Objects 
{ 
    class SearchModel 
    { 
      public class SearchResults 
      { 
       public string CustomerName { get; set; } 
       public string BirthDate { get; set; } 
       public string Address1 { get; set; } 
      } 
    } 
} 

Aber ich weiß nicht, wie dies zu tun? Kann mir bitte jemand zeigen, was ich hier falsch mache? Jede Hilfe wird sehr geschätzt.

Antwort

0

Das Problem ist, dass Ihr Sproc nicht alle Spalten zurückgibt, die Sie benötigen, indem Sie sagen, dass es eine CustomerProfile zuordnen sollte.

Wenn es die Eigenschaften aus der DataReader zu lesen versucht, kann es nicht eine Spalte finden CustomerProfileID genannt, daher der Nachricht:

Ein Mitglied des Typs ‚CustomerProfileID‘, verfügt nicht über eine entsprechende Spalte im Datenleser mit dem gleichen Namen

Ihr SearchResults sieht gut aus. Sie müssen nur "Rückgabe einer Sammlung von" auf "Entities: SearchResults" setzen.

+0

Das habe ich versucht, @Pedro. Wenn ich das Dropdown-Menü "Entitäten" anschaue, werden meine "SearchResults" dort nicht angezeigt. Wie mache ich das möglich? Mein SearchModel befindet sich in meinem Objektordner, der auch das Hauptmodell namens SVPModel.edmx hat. Wo gehe ich falsch? – Turp

+0

Ehrlich gesagt, habe ich nie die Benutzeroberfläche dafür verwendet. Aber sollten Ihre 'SearchResults' nicht von 'EntityObject' erben? Versuchen Sie dies: Kommentieren Sie Ihre 'SearchResults' und erstellen Sie eine neue Entity im edmx Designer mit den 3 Eigenschaften, die Sie benötigen. Es sollte es tun, denke ich, aber wieder, ich bin kein Experte in diesem ... – Pedro

Verwandte Themen