mac*_*ira 6 asp.net-mvc asp.net-mvc-4
我有一个与MVC连接查询的问题,我不知道为什么.
无法在LINQ to Entities查询中构造实体或复杂类型"Tusofona_Website.Models.site_noticias".
我的控制器:
private TusofonaDBs db = new TusofonaDBs();
//
// GET: /DestaquesMain/
public ActionResult Index()
{
var query = (from sd in db.site_desquesnoticias
join sn in db.site_noticias on sd.IDNoticia equals sn.IDNoticia
where sn.Destaque == 1
select new site_noticias {
CorpoNoticia = sn.CorpoNoticia,
TituloNoticia = sn.TituloNoticia
}).ToList();
//return View(db.site_desquesnoticias.ToList());
return View(query);
}
Run Code Online (Sandbox Code Playgroud)
我的型号:
public class site_destaquesnoticias
{
[Key]
public Int32 IDDestaque { get; set; }
public Int32 IDNoticia { get; set; }
public string Foto { get; set; }
}
public class site_noticias
{
[Key]
public Int32 IDNoticia { get; set; }
public string CorpoNoticia { get; set; }
public string TituloNoticia { get; set; }
public string Foto { get; set; }
public Int32 Destaque { get; set; }
}
public class TusofonaDBs : DbContext
{
public DbSet<site_destaquesnoticias> site_desquesnoticias { get; set; }
public DbSet<site_noticias> site_noticias { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?
sTo*_*rov 15
您无法投影到映射的实体(请参阅此答案).
但是,您可以做以下几件事:
1)选择匿名类型而不是实体,如:
var query = (from sd in db.site_desquesnoticias
join sn in db.site_noticias on sd.IDNoticia equals sn.IDNoticia
where sn.Destaque == 1
select new {
CorpoNoticia = sn.CorpoNoticia,
TituloNoticia = sn.TituloNoticia
}).ToList();
Run Code Online (Sandbox Code Playgroud)
2)反转您的查询以直接选择site_noticias.这取决于您要检索的查询和数据.例如,您可以查看以下内容是否有效并为您提供所需的数据:
var query = (from sd in db.site_desquesnoticias
join sn in db.site_noticias on sd.IDNoticia equals sn.IDNoticia
where sn.Destaque == 1
select sn).ToList();
Run Code Online (Sandbox Code Playgroud)
3)使用一些DTO(数据传输对象)将要选择的属性投影到:
public class SiteNoticiasDTO{
public string CorpoNoticia {get;set;}
public string TituloNoticia {get;set;}
}
var query = (from sd in db.site_desquesnoticias
join sn in db.site_noticias on sd.IDNoticia equals sn.IDNoticia
where sn.Destaque == 1
select new SiteNoticiasDTO {
CorpoNoticia = sn.CorpoNoticia,
TituloNoticia = sn.TituloNoticia
}).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30560 次 |
| 最近记录: |