簡體   English   中英

為什么 DB2 將連接字符串中的我的 UserId 作為我的表名?

[英]Why does DB2 put my UserId from the connection string as my table name?

我正在嘗試使用 Entity Framework Core 來查詢我的 DB2 數據庫。 這是我注冊它的方法:

services.AddDbContext<DB2Contexte>(options =>
                options.UseDb2(Configuration.GetConnectionString("DB2"),
                    builder =>
                    {
                        builder.SetServerInfo(IBMDBServerType.AS400, IBMDBServerVersion.AS400_07_01);
                        builder.UseRowNumberForPaging();
                        builder.MaxBatchSize(1);
                    }));

這就是 class 用作 DbSet:

在此處輸入圖像描述

還有我的連接字符串:

服務器=某事;用戶 ID=U_SERVTI;密碼=某事;數據庫=某事; 庫列表=某事;當前函數路徑=*LIBL

比我嘗試使用簡單的 LINQ 查詢數據庫時:

_dbContext.PersonneRessource.FirstOrDefault()

我收到此錯誤:

錯誤 [42704] [IBM][AS] SQL0204N “U_SERVTI.DX37PERE”是未定義的名稱。

為什么名稱中有 UserId? 它不應該只查詢表並省略用戶ID嗎?

我使用 IBM.EntityFrameworkCore-lnx 版本 3.1.0.500。

Db2 for IBM i,由於歷史原因,支持兩種命名約定; SYS 和 SQL。

默認情況下,外部連接將使用 SQL 命名,就像 Db2 系列的 rest 一樣,不合格的表引用將被隱式限定為“運行時授權標識符”; 通常是用於連接的用戶 ID。

使用 SYS 命名,不合格的表引用由 *LIBL 限定,並且庫列表用於查找表。

在您的連接字符串上,您將要添加Naming=SYS (或者可能是Naming=*SYS

請注意,SYS 與 SQL 的命名會影響幾乎所有不合格的參考。 請務必查看文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM