C# EF Core 将对象转换为字符串/get;放

标签 c# entity-framework entity-framework-core

尝试在 C# 中将对象转换为字符串时,我确实遇到了堆栈溢出。我正在对端点进行 API 调用并将响应传递给此类。由于 ef 核心不支持数据类型“object”,我尝试将此数据类型转换为字符串,以将其作为列存储在数据库中。

我有一个具有各种属性的类,例如

public DateTime? start_date_local { get; set; }
public string? timezone { get; set; }
public double? utc_offset { get; set; }

其中一些来自对象类型:

[NotMapped]
public object? start_latlng { get; set; }

由于不支持此数据类型,因此我不会将其映射到数据库,但我尝试将其转换为字符串并将其存储在可以插入数据库的第二种数据类型中。

public string start_latlng2
{
    get { return start_latlng2; }
    set { start_latlng2 = Convert.ToString(start_latlng); }
}

这似乎不起作用,因为我总是收到如下错误:

Stack overflow.
Repeat 19126 times:
--------------------------------
   at SportAnalytics.DataModel.Activity.get_start_latlng2()
--------------------------------
   at DynamicClass.lambda_method171(System.Runtime.CompilerServices.Closure, Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.EnsureOriginalValues()
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntrySubscriber.SnapshotAndSubscribe(Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry)

我做错了什么吗?有没有更好的方法来实现我想要做的事情?

最佳答案

StackoverflowException 来自错误的属性定义。您应该用显式的后字段来编写它。

private string _start_latlng2;
public string start_latlng2
{
    get { return _start_latlng2; }
    set { _start_latlng2 = value; }
}

在您的情况下,您应该使用显式只读属性,该属性将在需要时调用:

public string start_latlng2
{
    get { return start_latlng == null ? null : Convert.ToString(start_latlng); }
}

关于C# EF Core 将对象转换为字符串/get;放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74994116/

相关文章:

c# - 如何在 ASP.NET MVC 中使用 ActionResult 返回带有声明的 Xml?

c# - 通过global.asax从外部类获取web.config请求

c# - EF6 Model First 无法导入函数

c# - Entity Framework 可以查询数据但不能保存

.net - 如何使用 .NET 4.6.1 导出到 EF Core 1.1 中的脚本

c# - 将 Entity Framework Core 实体转换为 SQL 字符串

c# - FK 约束可能会导致循环或多个级联路径

c# - 如何从 java 中的文件绘制图形(线)?

c# - C# (.NET) 的 strtotime

c# - MVC 4 后期绑定(bind) DataContext 实体 LINQ 引用