gpt4 book ai didi

c# - 不允许在查询中显式构造实体类型 'Artist'

转载 作者:太空狗 更新时间:2023-10-30 00:19:24 24 4
gpt4 key购买 nike

编译正常,但执行失败,出现标题错误。

ArtistService.cs

public class ArtistService : IArtistService
{
public List<Artist> ArtistDetail()
{
using (ArtistDataContext db = new ArtistDataContext())
{
return (from artist in db.Artists

select new Artist()
{
Id = artist.Id,
Artist_name = Artist.Artist_name
}).ToList(); <=== error happened here
}
}
}

代码隐藏

private List<ArtistServiceReference.Artist> ArtistDetail()
{
ArtistServiceReference.ArtistServiceClient client = new
ArtistServiceReference.ArtistServiceClient();

ArtistServiceReference.Artist[] artists = client.ArtistDetail();

return artists.ToList();

我想将艺术家列表移动到下拉列表。

错误发生在 ArtistService.cs 的末尾 {).ToList();关于如何解决此问题的任何解释?谢谢

我的代码基于此示例,并且此示例运行良好。

示例代码MyService.cs

public class MyService : IMyService
{
public List<Task> GetTasks()
{
using (TasksDataContext db = new TasksDataContext())
{
return (from task in db.TasksLists
select new Task()
{
Id = task.taskId,
Name = task.taskName,

}).ToList();
}
}
}

示例 default.aspx.cs

private List<TaskService.Task> GetTasks()
{
TaskService.MyServiceClient client = new TaskService.MyServiceClient();

TaskService.Task[] tasks = client.GetTasks();

return tasks.ToList();
}

我不明白为什么这个例子会起作用而我的却不起作用。唯一的区别是这个例子返回到一个 GridView ,而我想返回一个下拉列表。

最佳答案

Linq to Entities 无法将 Artist 对象创建转换为 SQL 代码(真的,这应该是什么样子?)。 Linq to Entities 只能执行 SQL 查询并将返回的字段映射到它知道如何映射到的某个实体(即您的 DbSet 实体)。因此,您需要先执行查询,然后在本地创建艺术家实体:

public class ArtistService : IArtistService
{
public List<Artist> ArtistDetail()
{
using (ArtistDataContext db = new ArtistDataContext())
{
return (from artist in db.Artists
select new { // select only columns you need
artist.Id,
artist.Artist_name
})
.AsEnumerable() // execute query
.Select(x => new Artist { // create instance of class
Id = x.Id,
Artist_name = x.Artist_name
})
.ToList();
}
}
}

顺便说一句,您的 Artists DbSet 中似乎有 Artist 实体。为什么不直接返回

 return db.Artists.ToList();

关于c# - 不允许在查询中显式构造实体类型 'Artist',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21265598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com