LINQ to实体不支持指定的类型成员'fullname' [英] The specified type member 'fullname' is not supported in LINQ to entities
问题描述
我有一个带有服务器端处理的jQuery DataTable,这给了我循环依赖问题。
我必须在我的DataTable中列出属于另一个类的字段`Administrator`。如果我将它包含在代码中,我会使用Ajax获得依赖性错误,例如
> DataTables警告:表id = datatableServer-Ajax错误。
有没有办法解决这个问题?
我的尝试:
**部门类**
公共类部门
{
public int DepartmentID {get;组; }
[StringLength(50,MinimumLength = 3)]
public string Name {get;组; }
[DataType(DataType.Currency)]
[Column(TypeName =money)]
public decimal Budget {get;组; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString ={0:yyyy-MM-dd},ApplyFormatInEditMode = true)]
[显示( Name =Start Date)]
public DateTime StartDate {get;组; }
[显示(名称=管理员)]
public int? InstructorID {get;组; }
[时间戳]
public byte [] RowVersion {get;组; }
public virtual Instructor Administrator {get;组; }
public virtual ICollection< Course>课程{get;组; }
}
**导师**
public class Instructor:Person
{
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString ={0:yyyy-MM-dd},ApplyFormatInEditMode = true)]
[显示(姓名=雇用日期)]
public DateTime HireDate {get;组; }
公共虚拟ICollection<课程>课程{get;组; }
public virtual OfficeAssignment OfficeAssignment {get;组; }
}
**控制器**
public ActionResult DataHandler([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
{
// IQueryable< Department> query = departmentService.GetDepartments();
IQueryable< Department>查询;
使用(SchoolContext db = new SchoolContext())
{
query = db.Departments;
var totalCount = query.Count();
//应用过滤器搜索
if(requestModel.Search.Value!= string.Empty)
{
var value = requestModel.Search.Value.Trim ();
query = query.Where(p => p.Name.Contains(value)
// || p.Administrator.FullName.Contains(value));
}
var filteredCount = query.Count();
//排序
var sortedColumns = requestModel.Columns.GetSortedColumns();
var orderByString = String.Empty;
foreach(sortedColumns中的var列)
{
orderByString + = orderByString!= String.Empty? ,:;
orderByString + =(column.Data)+
(column.SortDirection ==
Column.OrderDirection.Ascendant?asc:desc);
}
query = query.OrderBy(orderByString ==
string.Empty?BarCode asc:orderByString);
//分页
query = query.Skip(requestModel.Start).Take(requestModel.Length);
var data = query.Select(a => new
{
Name = a.Name,
Budget = a.Budget,
StartDate = a.StartDate,
// Administrator = a.Administrator.FullName
})。ToList();
返回Json(new DataTablesResponse
(requestModel.Draw,data,filteredCount,totalCount),
JsonRequestBehavior.AllowGet);
}
}
**脚本**
$(document).ready(function(){
$('#datatable')。dataTable(); //客户端数据表
var departmentsList;
$(function(){
departmentsList = {
dt:null,
init:function(){
//服务器端dataTable
dt = $('#datatableServer')。DataTable({
serverSide:true,
processing:true,
ajax :{
url:
@ Url.Action(DataHandler,Department)
},
columns:[
{ data:Name,
searchable:true},
{data:Budget,
searchable:true},
{data:StartDate,
searchable:true}
// {data:Administrator,
/ /searchable:true}
],
lengthMenu:[[10,25,50,100],[10,25,50,100]],
});
}
}
//初始化数据表
departmentsList.init();
});
});
(document).ready(function(){
< blockquote>('#datatable')。dataTable(); //客户端数据表
var departmentsList;
(function(){
departmentsList = {
dt:null,
init:function(){
//服务器端dataTable
dt =
I have a jQuery DataTable with server-side processing which is giving me circular dependency issue.
I have to list a field `Administrator` in my DataTable that belongs to another class. If I include it in the code, I get dependency errors with Ajax like
> DataTables warning: table id=datatableServer-Ajax error.
Is there a way to fix this issue?
What I have tried:
**Department class**
public class Department { public int DepartmentID { get; set; } [StringLength(50, MinimumLength = 3)] public string Name { get; set; } [DataType(DataType.Currency)] [Column(TypeName = "money")] public decimal Budget { get; set; } [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] [Display(Name = "Start Date")] public DateTime StartDate { get; set; } [Display(Name = "Administrator")] public int? InstructorID { get; set; } [Timestamp] public byte[] RowVersion { get; set; } public virtual Instructor Administrator { get; set; } public virtual ICollection<Course> Courses { get; set; } }
**Instructor**
public class Instructor : Person { [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] [Display(Name = "Hire Date")] public DateTime HireDate { get; set; } public virtual ICollection<Course> Courses { get; set; } public virtual OfficeAssignment OfficeAssignment { get; set; } }
**Controller**
public ActionResult DataHandler([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel) { //IQueryable<Department> query = departmentService.GetDepartments(); IQueryable<Department> query; using (SchoolContext db = new SchoolContext()) { query = db.Departments; var totalCount = query.Count(); // Apply filters for searching if (requestModel.Search.Value != string.Empty) { var value = requestModel.Search.Value.Trim(); query = query.Where(p => p.Name.Contains(value) //|| p.Administrator.FullName.Contains(value)); } var filteredCount = query.Count(); // Sorting var sortedColumns = requestModel.Columns.GetSortedColumns(); var orderByString = String.Empty; foreach (var column in sortedColumns) { orderByString += orderByString != String.Empty ? "," : ""; orderByString += (column.Data) + (column.SortDirection == Column.OrderDirection.Ascendant ? " asc" : " desc"); } query = query.OrderBy(orderByString == string.Empty ? "BarCode asc" : orderByString); // Paging query = query.Skip(requestModel.Start).Take(requestModel.Length); var data = query.Select(a => new { Name = a.Name, Budget = a.Budget, StartDate = a.StartDate, //Administrator = a.Administrator.FullName }).ToList(); return Json(new DataTablesResponse (requestModel.Draw, data, filteredCount, totalCount), JsonRequestBehavior.AllowGet); } }
**Script**
$(document).ready(function () { $('#datatable').dataTable(); //client side datatable var departmentsList; $(function () { departmentsList = { dt: null, init: function () { //Server-side dataTable dt = $('#datatableServer').DataTable({ "serverSide": true, "processing": true, "ajax": { "url": "@Url.Action("DataHandler","Department")" }, "columns": [ { "data": "Name", "searchable": true }, { "data": "Budget", "searchable": true }, { "data": "StartDate", "searchable": true } //{ "data": "Administrator", //"searchable": true } ], "lengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]], }); } } // initialize the datatables departmentsList.init(); }); });
(document).ready(function () {
('#datatable').dataTable(); //client side datatable var departmentsList;
(function () { departmentsList = { dt: null, init: function () { //Server-side dataTable dt =
这篇关于LINQ to实体不支持指定的类型成员'fullname'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!