【问题标题】:Is there a way to use ARRAYs in Entity Framework + PostgreSql有没有办法在 Entity Framework + PostgreSql 中使用 ARRAY
【发布时间】:2015-05-25 01:00:34
【问题描述】:

是否可以在 Entity Framework 中使用 PostgreSql 中的数组?

假设,例如,我们有 POCO 类

        public class MyTable
        {
            [Key]
            [Column("gid")]
            public int Gid { get; set; }
            [Column("name")]
            public string Name { get; set; }
            [Column("email")]
            public string Email { get; set; }
            [Column("somedata")]
            public int[] SomeData { get; set; }
        }

此时,Entity Framework 根本不创建列“somedata”并跳过它。有没有办法做到这一点?我的意思是不必使用单独的表格。当您想将少量或有限数量的值存储到单个列中时,Postgres 数组会派上用场。

【问题讨论】:

  • 可能取决于数据提供者。 Devart dotConnect 声称他们这样做了。
  • @GertArnold,你能指出 Devart 说他们在哪里做的吗?我在 Npgsql 上工作,AFAIK EF 本身对基本类型之外的类型不是很开放。
  • 也许我说的太多了。 Here 他们关于他们的 ADO.NET 提供程序:“它支持广泛的 PostgreSQL 特定功能,例如安全 SSL 连接、PostgreSQL 通知、PostgreSQL 批量数据加载、GEOMETRY、PostgreSQL ARRAY 类型等。”
  • 啊,好的。我猜这意味着他们在 ADO.NET 层而不是在 EntityFramework 中支持它。问题似乎更多出在 EF 本身,而不是 Npgsql 或 dotConnect 的实现。但是我没有很深入地研究这个。
  • 我不相信 EF 对此有任何支持,它只是不是这样设计的。看看下面的code

标签: arrays entity-framework postgresql npgsql


【解决方案1】:

如果您将Entity Framework CoreNpgsql EF Core provider 一起使用,则可以做到这一点。

代码优先的方法是:

[Column("somedata", TypeName = "integer[]")]
public int[] SomeData { get; set; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 2022-01-14
    • 2023-03-03
    • 2020-05-03
    • 2021-02-14
    • 1970-01-01
    • 2020-07-03
    • 2016-03-24
    相关资源
    最近更新 更多