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();
}