我如何修复“LINQ to Entities无法识别方法”错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何修复“LINQ to Entities无法识别方法”错误相关的知识,希望对你有一定的参考价值。

我得到LINQ to Entities无法识别方法'System.String GetName(System.Type,System.Object)'的方法,而且这个方法无法转换成商店表达式。

我该如何解决这个问题?我没有找到适合我案例的例子。

 return context.Books.Select(e => new BookViewModel
            {
                BookId = e.BookId,
                BookName = e.BookName,
                Genre = new GenreViewModel
                { GenreName = Enum.GetName(typeof(Genre), (int)e.Genre), GenreId = (int)e.Genre },// error is here
                Pages = e.Pages,
                Publisher = e.Publisher,
                Authors = e.Authors.Select(t => new AuthorViewModel
                {
                    AuthorId = t.AuthorId,
                    AuthorName = t.AuthorName
                }).ToList()
            });

楷模:

public enum Genre
{
[Description("Comedy")]
Comedy,
[Description("Drama")]
Drama,
[Description("Horror")]
Horror,
[Description("Realism")]
Realism,
[Description("Romance")]
Romance,
[Description("Satire")]
Satire,
[Description("Tragedy")]
Tragedy,
[Description("Tragicomedy")]
Tragicomedy,
[Description("Fantasy")]
Fantasy,
[Description("Mythology")]
Mythology,
[Description("Adventure")]
Adventure,
}
public class GenreViewModel
{
        public int GenreId { get; set; }
        public string GenreName { get; set; }
}
答案

最简单的方法可能是在ViewModel中使用GenreName的简单getter

public class GenreViewModel
{
        public int GenreId { get; set; }
        public string GenreName { get{ return Enum.GetName(typeof(Genre), GenreId);}}
}

所以你不需要把它放在Select条款中。

以上是关于我如何修复“LINQ to Entities无法识别方法”错误的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 JSON 不填充我的 UITableView?

为啥我需要静态修饰符以及如何修复它?

如何使用 Objective-C 修复 UIViewController 中的页脚?

使用 vue.js 时如何修复“1 个可能使用 `--fix` 选项修复的错误”?

求助,如何修复win10引导。

如何修复此访问代码