Asp.net 不支持LINQ到实体
在Asp.NETWebAPI中,我使用以下模型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 {
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
)