将WCF IPC服务添加到通过EntityFrameworkCore访问SQLite DB的现有应用程序

时间:2018-12-03 23:59:00

标签: c# wcf entity-framework-core servicehost

我正在寻找帮助。

我有一个用于Mac的Mono应用程序,该应用程序是在VS for Mac中开发的,使用的是VS for Mac中的最新更新,其中包括Mono Framework MDK 5.16.0.221。该应用程序的目标是.NET Framework 4.7.1

该应用程序通过EF Core(所有最新软件包)访问SQLite DB,问题是,如果我尝试向该应用程序添加WCF服务,事情就会刹车。显然,服务启动和数据库上下文初始化之间的顺序使应用程序崩溃。

我创建了this example project,其中包括针对该问题的测试用例。

它可以正常工作,但是如果IPC初始化是在数据库上下文之前完成的(将this line移动到this one之后),则可以重现故障。

编辑:

我检测到的问题是WCF ServiceHost之间的启动顺序,而EF DbContext的初始化正在影响应用程序行为。

首先初始化ServiceHost

serviceHost = new ServiceHost(singletonInstance);

...

serviceHost.AddServiceEndpoint(typeof(S), new NetTcpBinding(), serviceAddress);
serviceHost.Open();

然后DbContext

var databaseProvider = new DatabaseProvider(DB_FILE);
DatabaseContext databaseContext = databaseProvider.GetConnection();

使用System.NotSupportedException : Specified method is not supported.从数据库访问信息时,会导致类似 databaseContext 的异常。

谢谢

0 个答案:

没有答案