0

谁能告诉我是否有办法让一个项目同时引用实体框架 5.x 和 6.x?我有两个独立的数据项目,一个必须是 EF 5.x,它是 Actian Pervasive,它们不支持 EF 6.x。另一个是在 EF 6.x 中完成的 MS SQL Server。我需要在另一个项目中使用这两个来与两个数据库通信。我在想我只是 SOL,但我想看看是否有人有任何建议。

4

1 回答 1

0

我认为您不能在同一个项目中使用同一个库的两个版本,但还有其他解决方法。你可以创建2个webapi,一个指向你的5.x项目,暴露你想要的方法,另一个指向你的6.x项目,做同样的暴露。

之后,在每个 webapi 上,您可以在类似层的合同中创建 Api 客户端,并通过 nuget 将其公开给您的客户端。

要创建发布到您的 webapi 的客户端,请查看此帖子。从那里,您无法使用以下内容创建客户端:

public class MyApiClient : BaseHttpClient, IMyApiClient
{
    public MyApiClient() : base(ConfigurationManager.AppSettings["WebApiUrl"])
    {
    }

    public ReturnDTO<ResponseDTO> MyMethod(FilterDTO filter)
    {
        return this.ExecutePost<FilterDTO, ReturnDTO<ResponseDTO>>("YourWebApiURL", filter);
    }

}

BaseHttpClient 类只是一个抽象 WebClient 实现的类。

之后,您可以通过 nuget 将此合同层公开给您的客户,他们可以简单地执行以下操作:

var client = new MyApiClient();
var response = client.MyMethod(new FilterDTO());
于 2016-11-01T19:32:21.643 回答