【问题标题】:Entity Framework storing arrays of data存储数据数组的实体框架
【发布时间】:2012-09-18 19:06:10
【问题描述】:

我开始尝试使用 Entity Framework Code-First,因为它看起来是一种快速启动和运行数据库的好方法。我来自 PostgreSQL 背景,它支持表中的数组类型,例如time[]。我的问题有两个; SQL Server 是否支持数组类型,如果支持,我如何在 EF 中使用它们?如果它们不受支持,那么表示此数据的替代方法是什么?

table Venue
    openhours time[]

编辑:上面的数组旨在存储一周中每一天的不同时间——例如,一个场所可能在不同的周末到工作日有不同的开放时间。

【问题讨论】:

    标签: c# sql-server entity-framework data-modeling


    【解决方案1】:

    不,不支持,您需要将 openhours 存储在单独的表 (VenueOpenhours) 中,并带有 Venue 表的外键。

    【讨论】:

    • 我怀疑这是解决方案,加入 7 行以获得单个场地的开放时间看起来很丑。
    【解决方案2】:

    SQL Server 不支持数组类型。从您的示例架构推断,我认为等效的 EF POCO 如下:

    public class Venue
    {
       public int VenueId { get; set; }
       public DateTime OpenHour { get; set; }
       public DateTime CloseHour { get; set; }
    }
    

    查找Venue 在给定时间是否打开只需要范围查询Venue.Where(a => a.OpenHour <= time && a.CloseHour >= time)。当然,这是一个非常简单的例子。您很可能希望将场地时间存储在另一个表中。但我希望这可以让你朝着正确的方向前进。

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      相关资源
      最近更新 更多