Asp.net 不支持LINQ到实体

Asp.net 不支持LINQ到实体,asp.net,asp.net-mvc,linq,asp.net-web-api,linq-to-entities,Asp.net,Asp.net Mvc,Linq,Asp.net Web Api,Linq To Entities,在Asp.NETWebAPI中,我使用以下模型 public class User { [Required, Key] public long Id { get; set; } public string Name { get; set; } public Company Employer { get; set; } [Required] public DateTime DateAdded {

在Asp.NETWebAPI中,我使用以下模型

public class User
    {
        [Required, Key]
        public long Id { get; set; }
        public string Name { get; set; }
        public Company Employer { get; set; }
        [Required]
        public DateTime DateAdded { get; set; }
    }
这是一个控制器的摘录

// GET api/Company/5
    public Object GetCompany(int id)
    {
        var query = from user in db.Users
                    join company in db.Companies on user.Employer.Id equals company.Id
                    where company.Id == id
                    orderby user.Name
                    select new { Id = user.Id, Name = user.Name, EmailAddress = user.EmailAddress, Version = user.DateAdded.ToString("dd.MM.yyyy"), Employer = company.Name };
        return query.AsEnumerable<Object>();
    }
//获取api/Company/5
公共对象GetCompany(内部id)
{
var query=来自数据库中的用户。用户
将公司加入数据库。user.Employer.Id上的公司等于company.Id
其中company.Id==Id
orderby user.Name
选择新的{Id=user.Id,Name=user.Name,EmailAddress=user.EmailAddress,Version=user.DateAdded.ToString(“dd.MM.yyyy”),Employer=company.Name};
返回query.AsEnumerable();
}

我想要的是格式化DateAdded属性。但是,当我尝试调用用户属性之一上的方法或调用用户的方法时,EF抛出NotSupportedException。如何设置日期格式?

EF无法将
user.DateAdded.ToString(“dd.MM.yyyy”)
方法转换为SQL代码。您应该将日期格式移动到客户端(使用
AsEnumerable()
ToList()
调用),或者使用在服务器端生成日期字符串:

Version = 
   SqlFunctions.DateName("dd", user.DateAdded) + "." +
   SqlFunctions.StringConvert(
       (decimal?)SqlFunctions.DatePart("MM", user.DateAdded)).Trim() + "." +
   SqlFunctions.DateName("yyyy", user.DateAdded)

EF无法将
user.DateAdded.ToString(“dd.MM.yyyy”)
方法转换为SQL代码。您应该将日期格式移动到客户端(使用
AsEnumerable()
ToList()
调用),或者使用在服务器端生成日期字符串:

Version = 
   SqlFunctions.DateName("dd", user.DateAdded) + "." +
   SqlFunctions.StringConvert(
       (decimal?)SqlFunctions.DatePart("MM", user.DateAdded)).Trim() + "." +
   SqlFunctions.DateName("yyyy", user.DateAdded)

太好了,谢谢!这里介绍了如何获取不同的日期部分:。还有办法把月份作为数字吗?@user2558051对不起,忘了月份了。更新了样本,并将其作为编号获取(您需要使用
StringConvert
DatePart
进行更新)太好了,谢谢!这里介绍了如何获取不同的日期部分:。还有办法把月份作为数字吗?@user2558051对不起,忘了月份了。更新了样本,将其作为编号获取(您需要使用
StringConvert
DatePart