我有两个项目:X和Y.Project X是一个类lib,它引用,例如,EF 6.项目Y作为引用X的控制台应用程序。为什么我得到一个无法加载依赖项异常,如果我不添加,比方说,EF 6投影Y?有没有办法将这些参考“带”到项目Y?
这里的想法是Y不应该知道EF-6,更不要说它的依赖性了!
答案 0 :(得分:2)
您很可能会将类暴露给Y,这些类继承自Entity Framework,很可能是您的实体,如果项目Y使用了您的Context,等等。
因此,项目Y需要引用实体框架,因为它不能解析类继承的类(基本属性,逻辑)。
从Y隐藏实体框架的唯一方法是使其完全独立于它。因此,例如,您可以在项目X中创建一个项目Y调用的服务类,并且此类的方法不公开来自Entity Framework的任何类,也不公开任何从Entity Framework中的类继承的类。您可以通过创建自己的实体来实现,然后从实体框架等中的查询映射到该实体。
另一种方法是将项目X隐藏在Web服务(WCF)之后。然后项目Y调用webservice,它调用项目X中的逻辑.WCF Web服务从Entity Framework中不公开任何内容,因此您的项目Y不需要任何对它的引用。