簡體   English   中英

Insight.Database自動界面和多對多映射

[英]Insight.Database Auto Interface & Mapping Many-to-Many

假設我有下表:

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:“序列不包含匹配的元素。”

您說對了,但是當接口返回一個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM