0

任何人都可以告诉我是否有办法引用实体框架5.x和6.x的项目吗?我有两个独立的数据项目,一个必须是EF 5.x,它是Actian Pervasive,他们不支持EF 6.x.另一个是在EF 6.x中完成的MS SQL Server。我需要在另一个项目中同时使用这两个数据库来与两个数据库进行通信。我想我只是SOL,但认为我会看看是否有人有任何建议。参考EF 5和EF 6项目的Visual Studio 2015项目

回答

0

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

之后,在每个webapi上,您可以像layer一样在合同中创建Api客户端,并通过nuget将其公开给客户端。

创建客户端发布到您的webapi,检查this post。从那里,你不能创建一个客户端是这样的:

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类只是一个类抽象Web客户端的实现。

这样做之后,可以使本合同层给您的客户,通过的NuGet,他们可以简单地做:

var client = new MyApiClient(); 
var response = client.MyMethod(new FilterDTO());