将成对的列表存储在一个表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的键。

对于相关的模型,我会有大量的点,我认为单独的表不是最佳解决方案有没有办法在表中嵌入点数组,或者我想错了

非常感谢您抽出时间。谢谢

将成对的列表存储在一个表EF中

以下应该有效-不确定我是否会推荐这种方法(因为我认为点的表可以),但已经说过它似乎对我有效。所以我使用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; }
}