这些是我的数据库模型:
public interface IIDentity
{
int Id {get; set;}
}
public class BaseModel : IIDentity
{
[Key]
public int Id { get; set; }
}
[Table("user")]
public class User : BaseModel
{
public string name {get; set;}
}
我要做的是从表中获取最后一个用户。 这不起作用。
context.user.LastOrDefault();
由于某些原因,linq to entities
不提供LastOrDefault()
(但是FirstOrDefault()
在工作)
我可以通过以下方式使其正常工作
context.user.OrderByDescending(x => x.Id).FirstOrDefault();
然后,我想使其更通用:
public static class IQueryableExtensions
{
public static T TakeLast<T>(this IQueryable<T> input) where T : IIDentity
{
return input
.OrderByDescending(x => x.Id)
.FirstOrDefault();
}
}
但是我遇到了错误:
'Unable to cast the type 'User' to type 'IIDentity'. LINQ to Entities only supports casting EDM primitive or enumeration types.'
我能做些什么吗?
答案 0 :(得分:1)
我能够通过将/login?error
泛型类型约束添加到扩展方法来解决此问题。
其中T:类,IIDentity
authenticationFailureUrl