C# 数据库自动接口&;映射多对多

C# 数据库自动接口&;映射多对多,c#,insight.database,C#,Insight.database,假设我有以下表格: 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;} publi

假设我有以下表格:

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;}
}
自动接口实现

public interface IGameLibrary
{
  List<Game> GetGamesAndUsers();
}

但是当调用connection.As()时,会抛出InvalidOperationException:“序列不包含匹配的元素。”

您说得对,但当接口返回列表而不是IList,并且您指定Id字段时,似乎出现了错误

如果您返回一个IList,则调用应该可以工作

public interface IGameLibrary 
{
  [Recordset(1, typeof(User), Id = "GameId", IsChild = true)]
  IList<Game> GetGamesAndUsers();
}
IGameLibrary公共接口
{
[记录集(1,typeof(User),Id=“GameId”,IsChild=true)]
IList GetGamesAndUsers();
}
我已将此作为问题136打开,它将在v4.2.7中修复


这很有效!感谢您的快速响应和解决问题。
[Recordset(1, typeof(User), Id = "GameId", IsChild = true)]
public interface IGameLibrary 
{
  [Recordset(1, typeof(User), Id = "GameId", IsChild = true)]
  IList<Game> GetGamesAndUsers();
}