0

asp.netを使用してアプリケーションを作成し、見出し、要約、およびデータベースの各エントリの一部の画像を表示するコードを作成します。私は画像を表示しようとしているとき、私はこの例外を取得:2つのテーブルのデータを表示します(LINQ to Entitiesクエリでは構築できません)。

型「System.NotSupportedException」の例外がEntityFramework.SqlServer.dllで発生したが、ユーザーコード 追加情報で処理されませんでした:エンティティまたは複雑なタイプ 'FileUpload.C​​ontext.Support'は、LINQ to Entitiesクエリでは構築できません。

私のDisplaySummary linqクエリで問題が発生しています。これを修正してサマリーと関連イメージを表示するにはどうすればいいですか?

ありがとうございました。

コントローラー: 私はコントローラでこれを試みたが、それは

public ActionResult Display() 
    { 
     var files = db.Supports.Select(d => new Support() 
     { 
      SupportId = d.SupportId, 
      Name = d.Name, 
      Summary = d.Summary, 
      FileDetails = d.FileDetails.Select(x => new FileDetail() 
      { 
       Id = x.Id, 
       FileName = x.FileName, 
       Extension = x.Extension 

      }).ToList() 
     }).ToList(); 
     return View(files); 
    } 

ビューは機能しません。

@model List<FileUpload.Models.Support> 
@{ 
    ViewBag.Title = "Index"; 
} 

@foreach (var p in Model) 
{ 
    <h3>@p.Name</h3> 
    <p>@p.Summary</p> 
    foreach (var file in p.Files) 
    { 
     <img class="img-thumbnail" width="150" height="150" src="~/Images/@(file.FileName+file.Extension)" /> 
    } 
} 

をモデル:

public class Support 
{ 

    public int SupportId { get; set; } 

    [Required(ErrorMessage = "Please Enter Your Name")] 
    [Display(Name = "Name")] 
    [MaxLength(100)] 
    public string Name { get; set; } 

    [Required(ErrorMessage = "Please Enter Summary")] 
    [Display(Name = "Summary")] 
    [MaxLength(500)] 
    public string Summary { get; set; } 

    public virtual ICollection<FileDetail> FileDetails { get; set; } 

} 

public class FileDetail 
{ 
    public Guid Id { get; set; } 
    public string FileName { get; set; } 
    public string Extension { get; set; } 
    public int SupportId { get; set; } 
    public virtual Support Support { get; set; } 

} 

コンテキスト:

public class EfDbcontext : DbContext 
{ 
    public EfDbcontext() 
     : base("name=DefaultConnection") 
    { 
    } 
    public DbSet<Support> Supports { get; set; } 
    public DbSet<FileDetail> FileDetails { get; set; } 
} 

答えて

0

あなたは絶対にSupportIdの正しい値なしFileDetail秒を持っている場合を除き、あなたは、単に

var files = db.Supports.Include(s => s.FileDetails).ToList(); 

を使用することができEntity Frameworkのは、LINQの式に直接エンティティタイプを作成することはできません。おそらく不完全なエンティティの問題を追跡するのを避けるために、それ自体を実行したいと考えています。

+0

Gertさん、ありがとうございました。あなたの問題を解決しました。 – ARandomUserNamedChuck

関連する問題