Vb.net 具有返回函数的Linq实体
我有两张桌子:Vb.net 具有返回函数的Linq实体,vb.net,linq,Vb.net,Linq,我有两张桌子: 房间类型(标识房间类型,名称房间类型) Room\u Room(ID\u Room\u Type,房间号) 如何在RoomType表中放置一个新列Temp,该列的值将作为Room\u Room表中的房间总数 此代码不起作用: Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click Dim Db As New HotelEntities
(标识房间类型,名称房间类型)房间类型
(ID\u Room\u Type,房间号)Room\u Room
RoomType
表中放置一个新列Temp
,该列的值将作为Room\u Room
表中的房间总数
此代码不起作用:
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
Dim Db As New HotelEntities
Dim s = (From I In Db.Room_Type Select I.ID_Room_Type, I.Name_Room_Type, ColumnTemp = GetTotal_Room(I.ID_Room_Type)).ToList()
Me.DataGridView1.DataSource = s
End Sub
Private Function GetTotal_Room(id_room_type As Int32) As Int32
Dim Db As New HotelEntities
Return (From I In Db.Room_Room Where I.ID_Room_Type = id_room_type).Count
End Function
消息错误:LINQ to实体无法识别方法“Int32”
GetTotal_Room(Int32)方法,并且无法转换此方法
转换为存储表达式
我有一个类似的问题,我通过先提取列表,然后对其应用linq来解决它。您可以按以下方式修改代码
Dim Db As New HotelEntities
Dim roomTypeList = Db.Room_Type.ToList()
Dim s = (From I In roomTypeList
Select I.ID_Room_Type, I.Name_Room_Type,
ColumnTemp = GetTotal_Room(I.ID_Room_Type)).ToList()
Me.DataGridView1.DataSource = s
我有一个类似的问题,我通过先提取列表,然后对其应用linq来解决它。您可以按以下方式修改代码
Dim Db As New HotelEntities
Dim roomTypeList = Db.Room_Type.ToList()
Dim s = (From I In roomTypeList
Select I.ID_Room_Type, I.Name_Room_Type,
ColumnTemp = GetTotal_Room(I.ID_Room_Type)).ToList()
Me.DataGridView1.DataSource = s
实体框架将为有效的sql查询生成Linq查询表达式。
错误消息explain EF不知道如何将方法
GetTotal\u Room
转换为有效的sql查询
相反,您可以从一个查询中获得所需的结果,而无需额外的函数
From roomRoom In db.Room_Room
Join roomType In db.Room_Type On roomRoom.ID_Room_Type Equals roomType.ID_Room_Type
Select New With { roomRoom.ID_Room_Type, roomType.Name_Room_Type } Into roomtypes
Group roomtypes By roomtypes Into grouptypes
Select New With
{
Id = grouptypes.Key.ID_Room_Type,
Name = grouptypes.Key.Name_Room_Type,
Total = grouptypes.Count()
}
另外,我不知道应用程序的上下文,但根据给定的示例,我认为可以删除表名和列名中的一些前缀和后缀
RoomType
Id
Name
Room
TypeId -- reference to RoomType.Id
实体框架将为有效的sql查询生成Linq查询表达式。
错误消息explain EF不知道如何将方法
GetTotal\u Room
转换为有效的sql查询
相反,您可以从一个查询中获得所需的结果,而无需额外的函数
From roomRoom In db.Room_Room
Join roomType In db.Room_Type On roomRoom.ID_Room_Type Equals roomType.ID_Room_Type
Select New With { roomRoom.ID_Room_Type, roomType.Name_Room_Type } Into roomtypes
Group roomtypes By roomtypes Into grouptypes
Select New With
{
Id = grouptypes.Key.ID_Room_Type,
Name = grouptypes.Key.Name_Room_Type,
Total = grouptypes.Count()
}
另外,我不知道应用程序的上下文,但根据给定的示例,我认为可以删除表名和列名中的一些前缀和后缀
RoomType
Id
Name
Room
TypeId -- reference to RoomType.Id
你是说你想在不向数据库表添加相应列的情况下向EF实体添加属性吗?是的,它的任务就是查询。我担心你使用
GetTotal\u Room
函数的查询甚至无法编译。引入将基于查询结果创建的新类型,并将其用于DataGridView
您是说要向EF实体添加属性,而不向数据库表添加相应的列吗?是的,它的任务只是查询,我担心使用GetTotal\u Room
函数的查询甚至无法编译。介绍您将根据查询结果创建的新类型,并将其用于DataGridView
感谢您的回答。很抱歉,从我看到的错误代码来看,Fabio只是错误地键入了)
,而不是}
。说“错误代码”并不能帮助他帮助你。从我看到的错误代码来看,法比奥只是错误地键入了)
,而不是}
。说“错误代码”无助于他帮助你