gpt4 book ai didi

c# - 将 JSON 列从 MySql 数据库映射到来自 Web Api 的 C# 类

转载 作者:行者123 更新时间:2023-12-03 18:44:17 27 4
gpt4 key购买 nike

我有一个带有列的 MySql 数据库 Id int 和 Name :json

位置表样本

Id      Name
1 {"en":"Sphinx","ar":"أبو الهول","fr":"Le sphinx"}

C#地方类
public class Place
{
[Key, Column("id")]
public int Id { get; set; }

[Column("name")]
public string Name { get; set; }
}

我正在连接 EntityFramework 6 并且连接成功并像这样检索数据

{Id = 1, Name = "{\"en\":\"Sphinx\", \"ar\":\"أبو الهول\", \"fr\":\"Le sphinx\"}" }



我想要如何将名称映射到 new Object不是 JSON string
像这样的东西

地点类(class)
public class Place
{
[Key, Column("id")]
public int Id { get; set; }

[Column("name")]
public Localized<string> Name { get; set; }
}

本地化类
public class Localized<T>
{
public T en { get; set; } // english localization
public T ar { get; set; } // arabic localization
public T fr { get; set; } // french localization
}

when I do this Name property come with NULL value



存储库中的代码
using (var context = new PlacesEntityModel())
{
return context.Places.Take(5).ToList();
}

我不想用 AutoMapper ,

我希望 EntityFramework 中的某些内容仅选择 一种语言数据库级 无需获取所有其他数据,然后将其映射

如何解决这个问题?

最佳答案

您可以尝试扩展方法从您的实体类型映射。

public class Place
{
[Key, Column("id")]
public int Id { get; set; }

[Column("name")]
public string Name { get; set; }
}

public class PlaceDTO
{
[Key, Column("id")]
public int Id { get; set; }

[Column("name")]
public Localized<string> Name { get; set; }
}

public class Localized<T>
{
public T en { get; set; } // english localization
public T ar { get; set; } // arabic localization
public T fr { get; set; } // french localization
}
扩展方法 ToDto
public static class Extensions
{
public static PlaceDTO ToDto(this Place place)
{
if (place != null)
{
return new PlaceDTO
{
Id = place.Id,
Name = JsonConvert.DeserializeObject<Localized<string>>(place.Name)
};
}

return null;
}
}
用法
var place = new Place() { Id = 1, Name = "{\"en\":\"Sphinx\", \"ar\":\"أبو الهول\", \"fr\":\"Le sphinx\"}" };
var placeDTO = place.ToDto();

Console.WriteLine($"{placeDTO.Id}-{placeDTO.Name.ar}-{placeDTO.Name.en}-{placeDTO.Name.fr}");

关于c# - 将 JSON 列从 MySql 数据库映射到来自 Web Api 的 C# 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60334688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com