2016-11-20 4 views
0

に暗黙的に変換文字列ことができない私はViewModelにモデルタイプ

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; } 
    } 

とcontoller持っている:私はエラーを取得select new SubjectOverviewViewModelセクションで

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 }); 

例えばc.TaAdatokは、文字列とそれであることをモデルタイプに暗黙的に変換することはできません。最初の引数NeptunIDは他の文字列と同じように文字列型ですが、エラーは表示されません。私がここで立ち往生してくれるのを助けてください。私はStackOverflow上の他のスレッドを見ていましたが、私がすでに実装していて動作しなかったソリューションです。

public partial class SubjectContent 
    { 
     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; } 

     public virtual Subject Subject { get; set; } 
    } 

public partial class Subject 
    { 
     public string NeptunId { get; set; } 
     public string Name { get; set; } 

     public virtual Node Node { get; set; } 
     public virtual SubjectContent SubjectContent { get; set; } 
     public virtual SubjectRating SubjectRating { get; set; } 

     public static implicit operator Subject(string v) 
     { 
      throw new NotImplementedException(); 
     } 
    } 

SubjectとSubjectContentは、エンティティデータモデリングのデータベースファーストメソッドによって作成されます。

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.TaAdatokstringですがSubjectOverviewViewModel.TaAdatokはタイプSubjectContentは次のとおりです。

+0

「SubjectContent」と「Subject」が何であるかわからないので、私はそれらが文字列ではないと確信しています。 'NeptunId = c.NeptunId'が例外をスローすることも確信しています。おそらく、達成しようとしていること、文字列から 'Subject/SubjectContent'オブジェクトを作成する方法を記述するべきでしょう。 –

+0

SziaTamás! 'SubjectOverviewViewModel.TaAdatok'プロパティのタイプは何ですか?おそらく、 'string'以外の何かであり、それが問題の原因です。 –

+0

右 - たとえば、 'SubjectOverviewViewModel.TaAdatok'クラスを表示します。 – adamshakhabov

答えて

0

問題は、ここでは、ということです。

ビューモデルのプロパティタイプが間違っていると思います。これを試してみてください:

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; } 
} 

@GertArnoldはコメントでsaindとして、あなたはすでにSubjectSubjectContentナビゲーションプロパティを持っている、ので、あなたはまた、大幅にクエリを簡素化することができます:最後の発言として

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 
        }; 

を、なぜあなたがサブジェクトに関するデータを含んでいても、変数customerlistを呼び出しますか?

関連する問題