如何使用Entity Framework将2D数组保存在数据库中

时间:2019-03-07 17:36:10

标签: c# .net entity-framework

我正在尝试使用Entity Framework将2D int数组保存在数据库中。但是这种方式不起作用:

public int[,] Board { get; set; } = new int[,]
    {
        {0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0},
        {0,0,0,1,2,0,0,0},
        {0,0,0,2,1,0,0,0},
        {0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0},
    };

有什么想法可以实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

板(双动力)阵列的常规表示形式为

public class Column
{
    public int BoardID { get; set; }
    public int ID { get; set; }
    public List<Row> Rows { get; set; }
}

public class Row
{
    public int BoardID { get; set; }
    public int ColumnID { get; set; }
    public int ID { get; set; }
    public object Value { get; set; }
}

public class Board
{
    public int ID { get; set; }
    public List<Column> Columns { get; set; }
}

实体框架与实体集一起使用,因此通常您希望将概念“分解”为实体驱动的方法。请注意,在这种情况下,您将需要三个表,而不仅仅是原始数组的X,Y表示。

从这里开始,您只需

dbContext.BOARD_TABLE.Add(myBoardInstance);
dbContext.SaveChanges();

由于Board-Column 1-N和Column-Row 1-N的关系,您的电路板实例(包括子列和行)将保存到DB。