PostgreSQL 中具有特定模式的 Linq 和实体迁移

Posted

技术标签:

【中文标题】PostgreSQL 中具有特定模式的 Linq 和实体迁移【英文标题】:Linq and Entity Migrations with specific schemas in PostgreSQL 【发布时间】:2013-07-23 03:41:56 【问题描述】:

使用 PostgreSQL,我可以对特定架构中的表执行查询,或者一次跨多个架构执行查询。我想知道如何处理两种情况:

    在使用 Linq to EF 执行查询时,如何指定多个架构或单个架构? 我想我也许可以执行一些连接字符串巫术,但似乎很快就会变得非常难看。 如何为多个架构执行实体迁移? 您可以将架构指定为对象上的DataAnnotation(通过[Table]),但您不能一次指定多个架构(据我所知)。

非常感谢任何帮助。

【问题讨论】:

表名是否相同? ex SchemaA.Address 和 SchemaB.Address?否则我不知道你为什么需要在你的 linq 查询中指定模式。 @EkoostikMartin 相同的表名。 【参考方案1】:

对于#1,没有办法直接在 Linq-To-Entities 查询中使用模式。我相信他们会在 EF6 中添加一些功能,但我猜你不想等到那时。

我在 SQL Server 2008 中使用了一种解决方法,使用 Synonyms(我相信 PostgreSQL 也有 Synonym 功能)。

例如,如果您的表名是 dbo.Addressread.Address,您将为 read.Address 创建一个名为 read.Address_readSynonym,然后将 Synonym 添加到您的 EF 数据模型中,而不是表本身。这使您能够一次针对多个模式执行任何和所有查询,因为 EF 认为这些表具有不同的名称。

【讨论】:

以上是关于PostgreSQL 中具有特定模式的 Linq 和实体迁移的主要内容,如果未能解决你的问题,请参考以下文章

LINQ:获取包含具有特定名称和值的属性的数组中的对象

使用具有不同层的 LINQ 意味着我无法访问特定类型

在 PostgreSQL 中选择具有特定列名的列

如何在postgresql中查找具有特定列的表

如何使用 LINQ 在 asp.net mvc 中获取具有特定子值的所有父母? [复制]

C# Linq 计算具有特定值的 XML 段