簡體   English   中英

如何使用實體框架連接到 Azure Synapse 數據庫?

[英]How to Connect to Azure Synapse Database using Entity Framework?

我們的項目中有 Entity Framework DB First 架構,我們需要從關系 Sql 服務器數據庫連接到 Azure 突觸數據庫以進行遷移。 由於 Azure Synpase 是 PAAS 而不是關系數據庫,我們無法使用 EF edmx 將數據庫中的 map 數據導入到我們的模型中。 正如我們所知,EF 是一個 ORM 即 object 關系映射器,它將關系從數據庫映射到對象。

錯誤:

由於以下異常,無法生成 model:
'System.Data.Entity.Core.EntityCommandExecutionException:執行命令定義時出錯。 有關詳細信息,請參閱內部異常。 ---> System.Data.SqlClient.SqlException: 'columnproperty' 不是可識別的內置 function 名稱。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException 異常,Boolean breakConnection,Action`1 wrapCloseInAction)

從 Azure 突觸數據庫創建 edmx 時出現以下錯誤

錯誤:

由於以下異常,無法生成 model:
'System.Data.Entity.Core.EntityCommandExecutionException:執行命令定義時出錯。 有關詳細信息,請參閱內部異常。 ---> System.Data.SqlClient.SqlException: 'columnproperty' 不是可識別的內置 function 名稱。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException 異常,Boolean breakConnection,Action`1 wrapCloseInAction)

我們需要使用任何方式使用實體框架連接到 Azure 突觸數據庫,而不僅僅是數據庫優先方法,它可以是任何方式。

對於這個問題,我們嘗試了 EF 數據庫優先方法的多個選項,但這里 EF 代碼優先方法解決了我們連接到 Azure 突觸的問題。 使用現有的 edmx,您無法連接到 Azure 突觸。

您需要按照以下步驟解決問題。

  1. 創建新的 Model 類,它們存在於您的 edmx 中。
  2. 在模型文件夾中創建新的 DBContext class。
  3. 新建 controller
  4. 在 controller get 方法中,您可以使用 C# lambda 表達式從新的 DBset 中查詢數據,如下所示。
IQueryable<test_customer> result = db.customerDbset 
            .Where(n => n.job.Equals(job))
            .ToList().AsQueryable();`

新增controller:

Select 新的 model 和新的 Dbcontext class 在以下字段中:

根據 azure 數據庫表,在 DbContext class 中進行以下更改以進行新映射:

3個

OnModelCreating方法中,您需要將新表從 Azure 突觸映射到我們的新表 model class,如上圖所示。 並在 Dbcontext class 中添加如下Dbcontext例如:

public DbSet<test_customer> customerDbset { get; set; }

完成所有這些后,從現有的 edmx 文件中刪除所有引用,並從您的項目中卸載該 edmx。

暫無
暫無

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

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