我被要求创建基于 Dataverse 数据库的 Web API。 我知道 Dataverse 已经拥有自己的 API 和 Web 服务来访问数据,但在未来的某个时候,我们可能希望从 Dataverse 迁移到另一个数据库,这就是为什么决定在现有 Dataverse API 之上构建 API。
我在构建 API 方面经验不是很丰富,但我的第一个想法是开始将 Entity Framework 与 Dataverse 结合使用(因为我对 EF 比对 Dataverse API 更熟悉)。
您在这个领域有任何经验吗?我的意思是使用实体框架而不是提供的服务(REST API、OrgSvc)从 Dataverse 访问数据?这是否有意义或者我应该使用现有的服务吗?
我们使用 MS Dynamics Dataverse 已有一年多了,但使用 .net Framework 4.7.2 访问数据确实很困难。
我们的开发团队甚至考虑过从 CData 购买该解决方案(来源:https://www.cdata.com/kb/tech/dataverse-ado-codefirst.rst),但它的价格很高。
微软表示 EF 的工作正在进行中。所以让 等待看看需要多长时间:https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-6.0/plan#dataverse-forming-common-data -服务
可以使用 ClientId 和 ClientSecret 连接到 Dataverse,但我必须从 Dataverse ServiceClient 获取令牌。
var dataverseService = services.BuildServiceProvider().GetRequiredService<IDataverseService>();
services.AddDbContext<SRXDataverse>(options =>
{
SqlConnection connection = new();
connection.ConnectionString = dataverseConstants.SqlConnectionString;
connection.AccessToken = dataverseService.Token;
options.UseSqlServer(connection);
});
使用 EF Core Power Tools 进行逆向工程工作正常,它具有交互式登录支持。