[英]How to insert data into Azure Synapse Database with SQLAlchemy
[英]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 突触。
您需要按照以下步骤解决问题。
IQueryable<test_customer> result = db.customerDbset
.Where(n => n.job.Equals(job))
.ToList().AsQueryable();`
新增controller:
Select 新的 model 和新的 Dbcontext class 在以下字段中:
根据 azure 数据库表,在 DbContext class 中进行以下更改以进行新映射:
在OnModelCreating
方法中,您需要将新表从 Azure 突触映射到我们的新表 model class,如上图所示。 并在 Dbcontext class 中添加如下Dbcontext
例如:
public DbSet<test_customer> customerDbset { get; set; }
完成所有这些后,从现有的 edmx 文件中删除所有引用,并从您的项目中卸载该 edmx。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.