adhikar patil Ответов: 0

Я хочу прочитать данные файла json с определенным массивом объектов json и вставить массовые данные в него ASP.NET ядро.


Привет,
Я хочу прочитать данные файла json с определенным массивом объектов json и вставить массовые данные в базу данных в Asp.net ядро.

У меня есть две таблицы в базе данных, как имена M203StructureKind, FlhDivision
CREATE TABLE [dbo].[M203StructureKind](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Code] [nvarchar](1) NOT NULL,
    [Description] [nvarchar](30) NOT NULL,
    [AgencyId] [int] NOT NULL,
    [IsActive] [bit] NOT NULL,
    [IsDeleted] [bit] NOT NULL,
    [AddedBy] [int] NOT NULL,
    [AddedOn] [datetime] NOT NULL,
    [ModifiedBy] [int] NOT NULL,
    [ModifiedOn] [datetime] NOT NULL
)

CREATE TABLE [dbo].[FlhDivision](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Code] [nvarchar](1) NOT NULL,
    [Description] [nvarchar](15) NOT NULL,
    [AgencyId] [int] NOT NULL,
    [IsActive] [bit] NOT NULL,
    [IsDeleted] [bit] NOT NULL,
    [AddedBy] [int] NOT NULL,
    [AddedOn] [datetime] NOT NULL,
    [ModifiedBy] [int] NOT NULL,
    [ModifiedOn] [datetime] NOT NULL
)

Кроме того, я сгенерировал сущности из базы данных с помощью asp.net ядро в папке models

например, M203StructureKind.cs
public partial class M203structureKind
{
    public int Id { get; set; }
    public string Code { get; set; }
    public string Description { get; set; }
    public int AgencyId { get; set; }
    public bool? IsActive { get; set; }
    public bool IsDeleted { get; set; }
    public int AddedBy { get; set; }
    public DateTime AddedOn { get; set; }
    public int ModifiedBy { get; set; }
    public DateTime ModifiedOn { get; set; }
}

и FlhDivision.в CS
public partial class FlhDivision
{
    public int Id { get; set; }
    public string Code { get; set; }
    public string Description { get; set; }
    public int AgencyId { get; set; }
    public bool? IsActive { get; set; }
    public bool IsDeleted { get; set; }
    public int AddedBy { get; set; }
    public DateTime AddedOn { get; set; }
    public int ModifiedBy { get; set; }
    public DateTime ModifiedOn { get; set; }
}

Теперь у меня есть файл MasterData.json, который содержит эти две таблицы данных с объектом json.

Файл MasterData.json содержит следующие файлы:
{ 
    "M203StructureKind": [
        {
            "Code": "1",
            "Description": "BRIDGE"
        },
        {
            "Code": "2",
            "Description": "CULVERT"
        },
        {
            "Code": "3",
            "Description": "TUNNEL"
        },
        {
            "Code": "4",
            "Description": "TRAIL BRIDGE"
        },
        {
            "Code": "5",
            "Description": "OTHER"
        }
    ],
    "FlhDivision": [
        {
            "Code": 1,
            "Description": "CFL"
        },
        {
            "Code": 2,
            "Description": "EFL"
        },
        {
            "Code": 3,
            "Description": "WFL"
        }
    ]
}

Так, теперь я хочу, чтобы массовая вставка данных в таблицу с помощью POST-API в Asp.net ядро. Но использование цикла foreach-это слишком длительный процесс, который также отнимает много времени, потому что у меня есть так много таблиц для вставки массовых данных в базу данных. Так скажи мне решение

Что я уже пробовал:

[HttpPut("copyMasterData/{id}")]
public async Task<IActionResult> CopyMasterData(int id, bool isCopiedData)
{
    try
    {
        string contentRootPath = _appSettings.MasterJsonPath;
        
        var folderDetails = Path.Combine(Directory.GetCurrentDirectory(), $"wwwroot\\{"MasterData\\masterdata.json"}");
        var JSON = System.IO.File.ReadAllText(folderDetails);
        dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(JSON);
        var response = 0;
        foreach (JObject structKind in jsonObj["M203StructureKind"])
        {
            string code = (string)structKind["Code"];
            string description = (string)structKind["Description"];
            int agencyId = id;
            bool IsActive = true;
            bool IsDeleted= false;
            int AddedBy = User.GetUserId();
            int ModifiedBy = User.GetUserId();
            DateTime ModifiedOn = DateTime.Now;
            DateTime AddedOn = DateTime.Now;
            response = await _m203structkindService.AddAsync(structKind.ToSingle<M203structureKind>());
        }

        foreach (JObject flh in jsonObj["FlhDivision"])
        {
            string code = (string)flh["Code"];
            string description = (string)flh["Description"];
            int agencyId = id;
            bool IsActive = true;
            bool IsDeleted = false;
            int AddedBy = User.GetUserId();
            int ModifiedBy = User.GetUserId();
            DateTime ModifiedOn = DateTime.Now;
            DateTime AddedOn = DateTime.Now;
            response = await _flhdivisionService.AddAsync(flh.ToSingle<FlhDivision>());
        }             

        return response > 0 ? Ok(new { message = "Master data added successfully." }) : StatusCode(500, "An error occured while adding master data. Please try again...");
    }
    catch (Exception ex)
    {
        return StatusCode(500, ResponseMessages.GetErrorMessage(ResponseMessages.MessageType.Add, ex.Message));
    }
}

RedDk

Уил,

Вот что меня трясет. Это уже третий репост проблемы. Но я отдаю тебе должное за то, что ты кое-что сделал. Даже несмотря на то, что создание кода для CREATE TABLE не относится к области JSON. Так же, как и в области C#.

Во всяком случае, чтобы сохранить нить жизни здесь @ QA, ответьте на комментарий. Или воспользуйтесь поиском, введя несколько слов, которые содержит каждый комментарий ... возможно, те, которые вы считаете наиболее заметными

0 Ответов