我有一个模型,需要存储测量值(双倍值)在一个数组中,最大大小约为10。我将始终保存和检索整个数组,因此在保存或获取时不需要对数组进行索引。所需要的只是一个 DateTime
以及测量地点的id。我的第一次尝试,没有考虑太多,是将数组保存为varbinary。但是,由于它将在webapp(blazorwasm)中使用,我猜在通过httpget/post发送值时,已经有一个转换为(json)字符串了——所以我想为什么不一直将它作为字符串保留,直到我需要webapp中的实际值(即在我的自定义httpservice/measurementrepository中)。即:
namespace ModelNamespace
{
public class MeasurementS
{
public int Id { get; set; }
public int SiteID { get; set; }
[MaxLength(60)] // maximum of 10 values in array with one decimal and max value of 999.9 (5 digits + one ',' separator = 6*10-1)
public string Values { get; set; }
public DateTime DateTime { get; set; }
}
public class MeasurementN
{
public int Id { get; set; }
public int SiteID { get; set; }
public double[] Values { get; set; }
public DateTime DateTime { get; set; }
}
public static class MeasurementNSConverter
{
private static readonly char del = ',';
public static MeasurementN ConvertFromStringToNumber(MeasurementS m)
{
return new MeasurementN()
{
DateTime = m.DateTime,
Id = m.Id,
SiteID = m.SiteID,
Values = StringToDoubleArray(m.Values)
};
}
public static MeasurementS ConvertFromNumberToString(MeasurementN m)
{
return new MeasurementS()
{
DateTime = m.DateTime,
Id = m.Id,
SiteID = m.SiteID,
Values = string.Join(del, m.Values.Select(v=> v.ToString("F1")))
};
}
private static double[] StringToDoubleArray(string s)
{
var parts = s.Split(del);
var n = parts.Length;
var result = new double[n];
for (int i = 0; i < n; i++)
{
result[i] = Convert.ToDouble(parts[i]);
}
return result;
}
}
}
在webapp(前端)中,执行从measurements(-tring)到measurementn(-umerical)的转换。
我想知道是否有人能看到任何主要的缺点,或者是否有更聪明的方法来做到这一点?我读过关于将值存储为字符串的问题(我猜varbinary对它同样敏感)。
编辑:在本地调试我运行sql server,然后在发布时运行azure sql。
暂无答案!
目前还没有任何答案,快来回答吧!