Insight.Database [BindChildren] на подклассе не работает - PullRequest
2 голосов
/ 29 марта 2020

Я использую insight.database с моим c# проектом. У меня есть класс, который имеет подкласс. Я использую внутреннее соединение в моем SP, чтобы сгладить и получить мои поля. Однако я хочу, чтобы некоторые поля результатов запроса отображались в мой подкласс. Это не работает, как я ожидал. Я попытался использовать атрибут BindChildren как для родительского, так и для подкласса по отдельности, а затем одновременно, но ни один из них не сработал. Родительский класс отображается правильно, но никакие значения не присваиваются свойствам подкласса. Может кто-нибудь сообщить мне, что я делаю неправильно?

SQL (spGetUserById):

select t1.id, t1.FirstName, t1.LastName,t2.Id, t2.GroupName
from table1 t1 
     inner join table2 t2 on t1.groupId = t2.id
where t1.id = @userId

Интерфейс репозитория:

public interface IUserRepository
{
    [Sql("spGetUserById")]
    User GetUserById(int userid);
}

Родительский класс:

public class User
{
    public int Id{get;set;}
    public string FirstName{get;set;}
    public string LastName{get; set;}
    public UserGroup Group{get;set;}
}

Подкласс:

[BindChildren]
public class UserGroup
{
    public int Id{get;set;}
    public string GroupName{get;set;}
}

1 Ответ

0 голосов
/ 06 апреля 2020

, поскольку это сопоставление OneToOne, а не отображение родительского -> дочернего списка, я мог бы использовать набор записей вместо [BindChildren]:

public interface IUserRepository
{
    [Recordset(0, typeof(User), typeof(UserGroup))]
    [Sql("spGetUserById")]
    User GetUserById(int userid);
}

Решение было опубликовано здесь: https://github.com/jonwagner/Insight.Database/issues/437

...