假设我有以下表格:
CREATE TABLE Game
(
GameId INT,
Name VARCHAR(50)
)
CREATE TABLE UserGameJoin
(
GameId INT,
UserId INT
)
CREATE TABLE User
(
UserId INT,
Username VARCHAR(50)
)
以下课程:
public class Game
{
public int GameId {get;set;}
public string Name {get;set;}
public List<User> Users {get;set;}
}
public class User
{
public int UserId {get;set;}
public string Username {get;set;}
}
如何从此存储过程映射结果
CREATE PROC GetGamesAndUsers
AS
SELECT *
FROM Game
SELECT GameId, u.*
FROM Game g
INNER JOIN UserGameJoin j ON j.GameId = g.GameId
INNER JOIN User u ON u.UserId = j.UserId
到自动接口实现?
public interface IGameLibrary
{
List<Game> GetGamesAndUsers();
}
我通过添加
来使用Recordset属性[Recordset(1, typeof(User), Id = "GameId", IsChild = true)]
但是在调用connection.As()时会抛出InvalidOperationException:&#34; Sequence不包含匹配的元素。&#34;
答案 0 :(得分:2)
你说得对,但是当接口返回List而不是IList并且你指定Id字段时,看起来有一个错误。
如果您返回IList,则呼叫应该有效。
public interface IGameLibrary
{
[Recordset(1, typeof(User), Id = "GameId", IsChild = true)]
IList<Game> GetGamesAndUsers();
}
我已将此问题打开为问题#136,并将在v4.2.7中修复。