Как десериализовать набор данных в список классов, используя ASP.NET Core C # - PullRequest
0 голосов
/ 03 января 2019

Как сериализовать набор данных для объекта в C #? Моя хранимая процедура возвращает набор данных с таблицами на основе этих операторов выбора:

select 
    st.Active, st.CountryCode, st.StateCode, st.StateName,st.GSTCode  
from 
    StateMaster st

select 
    ct.CountryCode, ct.CountryName, ct.Active 
from 
    CountryMaster ct

select 
    cm.Active, cm.CityCode, cm.CityName, cm.CountryCode,
    cm.CreateDate, cm.ID, cm.StateCode, cm.CreatedBy 
from 
    CityMaster cm 

Возвращает:

{
    "Table": [
        {
            "CountryCode": "91",
            "StateCode": "01",
            "StateName": "Andhra Pradesh",
            "Active": true,
            "GSTCode": "37"
        },
        {
            "CountryCode": "91",
            "StateCode": "02",
            "StateName": "Arunachal Pradesh",
            "Active": true,
            "GSTCode": "12"
        }
    ],
    "Table1": [
        {
            "CountryCode": "91",
            "CountryName": "India",
            "Active": true
        }
    ],
    "Table2": [
        {
            "ID": 1113,
            "CityCode": "1",
            "CityName": " Alipur ",
            "StateCode": "31",
            "CountryCode": 91,
            "Active": true,
            "CreateDate": "2018-07-25T10:59:32.44",
            "CreatedBy": "6000013"
        },
        {
            "ID": 1122,
            "CityCode": "10",
            "CityName": " Bindraban ",
            "StateCode": "31",
            "CountryCode": 91,
            "Active": true,
            "CreateDate": "2018-07-25T10:59:42.437",
            "CreatedBy": "6000013"
        },
        {
            "ID": 1212,
            "CityCode": "100",
            "CityName": " Bapatla ",
            "StateCode": "01",
            "CountryCode": 91,
            "Active": true,
            "CreateDate": "2018-07-25T11:01:21.817",
            "CreatedBy": "6000013"
        }
    ]
}

JsonConvert.DeserializeObject<AllClsList>(jsondpl); возвращает пустой класс.

Пожалуйста, укажите мне - как я могу десериализовать или преобразовать набор данных непосредственно в AllClsList

1 Ответ

0 голосов
/ 03 января 2019

Создайте Table, Table1 и Table2 DTO классы для отображения данных следующим образом:

public class Table
{
   public string CountryCode {get; set;}
   public string StateCode {get; set;}
   public string StateName {get; set;}
   public bool Active {get; set;}
   public string GSTCode {get; set;}
}

public class Table1
{
   public string CountryCode {get; set;}
   public string CountryName {get; set;
   public bool Active {get; set;}
}

public class Table2
{
   public string ID {get; set;}
   public string CityCode {get; set;}
   public string CityName {get; set;}
   public string StateCode {get; set;}
   public string ContryCode {get; set;}
   public bool Active {get; set;}
   public string CreateDate {get; set;}
   public string CreatedBy {get; set;}
}

Теперь напишите класс модели, содержащий все таблицы, следующим образом:

public class AllTables
{
   public List<Table> Tables {get; set;}
   public List<Table1> Table1s {get; set;}
   public List<Table2> Table2s {get; set;}
}

Теперь. Если вы получили JsonData через вызов API, выполните десериализацию следующим образом:

var allTables = JsonConvert.DeserializeObject<AllTables>(yourJsonData);

Если хранимая процедура, возвращающая данные, находится в вашей собственной базе данных приложения, выполните следующие действия:

Ваш DbContext:

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext()
    {
    }
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {

    }

    public DbQuery<AllTables> AllTables { get; set; }
}

Затем сделайте запрос следующим образом:

var allTables = context.AllTables
    .FromSql("EXECUTE dbo.YourStoredProcedure")
    .ToList();

Для более подробной информации: Типы запросов в EF Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...