如何在C# Entity Framework模型中使用Json数据类型?

7
model.cs

[Column(TypeName = "json")]
    public string application_role { get; set; }

这是MySQL,特定列的数据类型是json,如何将其添加到模型类中。我尝试使用DataAnnotations但出现错误。

The specified type member 'application_role' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

Linq查询获取数据

context.sc_employee_details
                    .Where(e => e.user_name.Equals(userName))
                    .Select(o => o.application_role).SingleOrDefault();

为什么不只使用字符串?只需进行序列化和反序列化即可。 - Hey24sheep
PraveenR,正如@Hey24sheep所指出的那样,您需要对JSON数据进行序列化和反序列化。我认为您无法以其他方式处理JSON。 - Abhishek Maurya
@AbhishekMaurya 移除了 DataAnnotations 但仍然出现相同的错误。 - Praveen R
@PraveenR 我的意思是这样的 https://www.newtonsoft.com/json/help/html/SerializingJSON.htm - Abhishek Maurya
@AbhishekMaurya 我明白了,大概是这样的吧?`get { var ser = new JsonSerializer(); /// .. return ser.Deserialize<Car[]>(jr); } set { var ser = new JsonSerializer(); //... }` - Praveen R
2个回答

5
可能有点晚了,但是MySQL上的EF支持JSON格式,这里是公告。 基本上,你需要定义一个类似于这样的属性:
public JsonObject<string[]> Tags { get; set; } // Json storage

希望能帮到你!

2
你需要做的是这样的:

你需要执行类似以下操作

   private string _application_role;
   public string application_role 
   { 
       get{
            return JsonConvert.DeserializeObject<string>(_application_role)
         } 
       set{
           _application_role = JsonConvert.SerializeObject(value);
         } 
   }

如果您不想编辑模型,那么可以尝试以下方法:

var myRole = context.sc_employee_details
                    .Where(e => e.user_name.Equals(userName))
                    .Select(o => o.application_role).SingleOrDefault();

if(myRole != null){
  var desRole = JsonConvert.DeserializeObject<string>(myRole);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接