【问题标题】:Using npgsql with CockroachDB and .Net Core将 npgsql 与 CockroachDB 和 .Net Core 一起使用
【发布时间】:2018-08-30 01:50:41
【问题描述】:

我成功使用 npgsql (Npgsql.EntityFrameworkCore.PostgreSQL) 连接到 PostgreSQL 数据库。我听说同一个 EF 提供程序与 CockroachDB 配合得很好。我正在尝试使用它,但需要帮助来定义 CockroachDB 的连接字符串。对于 PostgreSQL,我使用了以下连接字符串:

optionsBuilder.UseNpgsql(@"Host=localhost;Database=<database>;Username=postgres;Password=<password>");

如果我想将连接字符串连接到 CockroachDB,有人知道连接字符串应该是什么样子吗?

【问题讨论】:

    标签: npgsql cockroachdb


    【解决方案1】:

    您提到的连接字符串几乎是正确的,您只需添加Port=26257,因为 CockroachDB 在专用端口上运行。

    如果 Cockroach 节点安全运行,您还需要指定 Security and Encryption 参数。

    您可以在docs 中找到使用 npgsql 与 CockroachDB 对话的示例代码,包括重要的“重试逻辑”部分。

    【讨论】:

    • 谢谢@Marc。效果很好。我现在正在努力处理与 CockroachDB 不兼容的 LINQ 生成的查询。虽然相同的查询适用于 PostgreSQL。知道在 EF 创建模型时是否必须在表模式映射中进行更多配置吗?
    • 这可能是一个单独的问题。也就是说,我对LINQ一无所知。它可能使用 CockroachDB 不支持的语句。你可以log the executed queries 看看哪些失败了。
    • 谢谢。我终于解决了。问题在于 DataContext 的 OnModelCreating() 事件中的 EF 实体和表名映射。当我将表名更改为小写时,它起作用了。例如。 modelBuilder.Entity().ToTable("students");
    猜你喜欢
    • 2015-10-04
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多