Создание приложения с использованием asp.net и кода, в котором отображается заголовок, сводка и некоторые изображения для каждой записи в базе данных. Я получаю это исключение, когда я пытаюсь отобразить изображения:Отображать данные из двух таблиц (не может быть сконструирован в запросе LINQ to Entities.)
Исключение типа «System.NotSupportedException» произошло в EntityFramework.SqlServer.dll, но не был обработан в пользовательском коде Дополнительная информация: объект или комплекс тип «FileUpload.Context.Support» не может быть сконструирован в запросе LINQ to Entities.
Проблема связана с моим запросом linq DisplaySummary
, и мне интересно, как я могу его исправить, чтобы он отображал сводку и связанные с ней изображения.
Благодарим за помощь.
Контроллер: Я попробовал это в контроллере, но он не работает
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; }
}
Спасибо, Герт, очень полезный ответ, вы исправили мою проблему – ARandomUserNamedChuck