将成对的列表存储在一个表EF中
本文关键字:一个 EF 列表 存储 | 更新日期: 2023-09-27 17:59:09
我使用了以下类:
public class Point
{
[Required]
public double X { get; set; }
[Required]
public double Y { get; set; }
}
模型包含:
public List<Point> Vertices { get; set; }
但EF试图根据以下消息创建一个单独的表:
EntityType"Point"未定义键。定义此EntityType的键。
对于相关的模型,我会有大量的点,我认为单独的表不是最佳解决方案有没有办法在表中嵌入点数组,或者我想错了
非常感谢您抽出时间。谢谢
以下应该有效-不确定我是否会推荐这种方法(因为我认为点的表可以),但已经说过它似乎对我有效。所以我使用VerticeDataText将点数据存储在字符串中,所以它存储在DB:中
public class Vertice
{
public int VerticeID { get; set; }
[NotMapped]
public Point[] Data
{
get
{
string[] rawInternalData = this.VerticeDataText.Split(';');
Point[] dataResult = new Point[rawInternalData.Length / 2];
int count = 0;
rawInternalData.ToList().ForEach(p =>
{
var pairArray = p.Split(',');
dataResult[count++] = new Point { X = double.Parse(pairArray[0]), Y = double.Parse(pairArray[1])};
});
return dataResult;
}
set
{
StringBuilder sb = new StringBuilder();
value.ToList().ForEach(p => sb.AppendFormat("{0},{1};", p.X, p.Y));
this.VerticeDataText = sb.ToString();
}
}
public string VerticeDataText { get; set; }
}