2016-11-20 17 views
0

Ich habe ein AnsichtsmodellKann Zeichenkette nicht in Modelltyp umwandeln implicity

public class SubjectOverviewViewModel 
    { 
     [DisplayName("Neptunkód")] 
     public Subject NeptunId { get; set; } 
     public SubjectContent TaFoAdatok { get; set; } 
     public SubjectContent TaAdatok { get; set; } 
     public SubjectContent TaOktatok { get; set; } 
     public SubjectContent TaKurzusok { get; set; } 
     public SubjectContent IrodalomLista { get; set; } 
     public virtual SubjectContent SubjectContent { get; set; } 

     public virtual Subject Subject { get; set; } 
    } 

und ein contoller:

irfwebpage20161013070934_dbEntities2 db = new irfwebpage20161013070934_dbEntities2(); //dbcontext class 
      List<SubjectOverviewViewModel> list = new List<SubjectOverviewViewModel>(); // to hold list of Customer and order details 
      var customerlist = (from x in db.Subject 
           join c in db.SubjectContent on x.NeptunId equals c.NeptunId 
           select new SubjectOverviewViewModel { NeptunId=c.NeptunId, 
            TaAdatok=c.TaAdatok, 
            TaFoAdatok=c.TaFoAdatok, 
            IrodalomLista=c.IrodalomLista, 
            TaKurzusok=c.TaKurzusok }); 

Im select new SubjectOverviewViewModel Abschnitt i den Fehler, dass zum Beispiel c.TaAdatok String ist und es kann es nicht implizit in Modelltyp konvertieren. Das erste Argument NeptunID zeigt keinen Fehler, obwohl es auch ein String-Typ ist wie die anderen. Bitte helfen Sie mir, hier festzustecken. Ich habe andere Threads auf StackOverflow angeschaut, aber diese Lösungen habe ich bereits implementiert und nicht funktioniert.

Betreff und SubjectContent werden von der Datenbank-First-Methode der Modellierung von Entity-Daten erstellt.

+0

Nun, ich weiß nicht, was 'SubjectContent' und' Subject' sind, ich bin mir sicher, dass es keine Strings sind. Ich bin mir auch sicher, dass 'NeptunId = c.NeptunId' eine Ausnahme auslöst. Vielleicht solltest du beschreiben, was du zu erreichen versuchst, wie du 'Subject/SubjectContent'-Objekte aus Strings erstellen willst. –

+0

Szia Tamás! Was ist der Typ der Eigenschaft 'SubjectOverviewViewModel.TaAdatok'? Vielleicht ist es etwas anderes als "String" und das ist die Ursache des Problems. –

+0

Rechts - zum Beispiel, zeigen Klasse 'SubjectOverviewViewModel.TaAdatok'. – adamshakhabov

Antwort

0

Das Problem ist, dass sich hier:

var customerlist = (from x in db.Subject 
          join c in db.SubjectContent on x.NeptunId equals c.NeptunId 
          select new SubjectOverviewViewModel { NeptunId=c.NeptunId, 
           TaAdatok=c.TaAdatok, 
           TaFoAdatok=c.TaFoAdatok, 
           IrodalomLista=c.IrodalomLista, 
           TaKurzusok=c.TaKurzusok }); 

c.TaAdatok ist ein string aber SubjectOverviewViewModel.TaAdatok vom Typ SubjectContent.

Ich denke, die Eigenschaftstypen in Ihrem Ansichtsmodell sind falsch. Versuchen Sie folgendes:

public class SubjectOverviewViewModel 
{ 
    [DisplayName("Neptunkód")] 
    public string NeptunId { get; set; } 
    public string TaFoAdatok { get; set; } 
    public string TaAdatok { get; set; } 
    public string TaOktatok { get; set; } 
    public string TaKurzusok { get; set; } 
    public string IrodalomLista { get; set; } 
} 

Sie können auch erheblich vereinfachen Ihre Anfrage ab, weil, wie @GertArnold saind in den Kommentaren, Sie bereits eine SubjectContent Navigationseigenschaft auf Subject haben:

var customerlist = from s in db.Subject 
        let sc = s.SubjectContent 
        select new SubjectOverviewViewModel 
        { 
         NeptunId = sc.NeptunId, 
         TaAdatok = sc.TaAdatok, 
         TaFoAdatok = sc.TaFoAdatok, 
         IrodalomLista = sc.IrodalomLista, 
         TaKurzusok = sc.TaKurzusok 
        }; 

Als letzte Bemerkung, warum nennst du die Variable customerlist, obwohl sie Daten über Themen enthält?

Verwandte Themen