こんにちは皆さん、私を助けてくれてありがとう。
KendoUI をテストしていて、AJAX を使用してグリッドをバインドしようとしていますが、エラーが発生します
The specified type member 'getFullName' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
私のモデルは次のようになります
プロジェクトモデル
public class Proyecto
{
[Required]
[Key]
[Display(Name = "Num. Proyecto")]
public virtual String ProyectoID { get; set; }
[Required]
[Display(Name = "ID Usuario")]
public virtual int UserID { get; set; }
[Required]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Display(Name = "Fecha De Inicio")]
public virtual DateTime FechaInicio { get; set; }
[Required]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Display(Name = "Fecha de Fin")]
public virtual DateTime FechaFin { get; set; }
[Display(Name = "Descripcion")]
public virtual String Descripcion { get; set; }
[Required]
[Display(Name = "Status")]
public virtual int StatusID { get; set; }
public virtual ICollection<Comentario> Comentarios { get; set; }
public virtual ICollection<Abono> Abonos{ get; set; }
public virtual ICollection<Cargo> Cargos{ get; set; }
public virtual ICollection<Status> Status { get; set; }
public virtual Usuario Usuario { get; set; }
}
ウスアリオモデル
public class Usuario
{
[Required]
[Key]
[Display(Name = "Id")]
public virtual int UserID { get; set; }
[Required]
[Display(Name = "Usuario")]
public virtual String UserName { get; set; }
[Required]
[Display(Name = "Password")]
public virtual String Password{ get; set; }
[Required]
[Display(Name = "Nombre")]
public virtual String Nombre { get; set; }
[Display(Name = "Apellidos")]
public virtual String Apellidos{ get; set; }
[Display(Name = "Email")]
public virtual String Email { get; set; }
[Required]
[Display(Name = "Nivel")]
public virtual int Nivel { get; set; }
public virtual ICollection<Proyecto> Proyectos { get; set; }
public virtual ICollection<Comentario> Comentarios { get; set; }
[Display (Name="Responsable")]
public virtual string getFullName
{
get {
return Nombre + " " + Apellidos;
}
}
}
Proyectoコントローラーには、このメソッドがあります(エラーが発生した場所)
public ActionResult Proyectos_Read([DataSourceRequest]DataSourceRequest request)
{
db.Configuration.ProxyCreationEnabled = false;
var proyectos = from e in db.Proyectos.Include(c => c.Usuario) select e;
DataSourceResult result = proyectos.ToDataSourceResult(request, o => new
{
ProyectoID = o.ProyectoID,
OCCliente = o.OCCliente,
FullName = o.Usuario.getFullName,
Descripcion = o.Descripcion
});
return Json(result, JsonRequestBehavior.AllowGet);
}
そして最後にこれが私の見解です
@(Html.Kendo().Grid<NTSMvc.Models.Proyecto>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.ProyectoID).Filterable(true).Groupable(true);
columns.Bound(p => p.OCCliente);
columns.Bound(p => p.Usuario.getFullName);
columns.Bound(p => p.Descripcion);
})
.DataSource( datasource => datasource
.Ajax()
.Read(read => read.Action("Proyectos_Read","Proyectos"))
.PageSize(5)
)
.Filterable()
.Groupable()
.Pageable()
)
グリッドで完全な名前を取得するために、linq クエリまたはモデルを変更する必要がある方法
ありがとうございました。
よろしく