Insight数据库自动接口&;映射多对多
本文关键字:映射 amp 数据库 接口 Insight | 更新日期: 2023-09-27 18:19:25
假设我有以下表格:
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)]
但在呼叫连接时。As()抛出InvalidOperationException:"Sequence不包含匹配的元素。"
你说得对,但当接口返回List而不是IList并且你指定了Id字段时,看起来有一个错误。
如果您返回一个IList,那么该调用应该可以工作。
public interface IGameLibrary
{
[Recordset(1, typeof(User), Id = "GameId", IsChild = true)]
IList<Game> GetGamesAndUsers();
}
我已经打开了这个问题#136,它将在v4.2.7中修复。
https://github.com/jonwagner/Insight.Database/issues/136