C# 通过另一个项目引用.NETCore中的实体框架6

C# 通过另一个项目引用.NETCore中的实体框架6,c#,asp.net,entity-framework,asp.net-core,C#,Asp.net,Entity Framework,Asp.net Core,我在解决方案中添加了一个新的ASP.NET核心Web应用程序Web API项目 我知道我不能在这个项目中使用EF6,但我想知道是否有办法让另一个使用.NET Framework的项目完成这项工作,并将数据传递回.NET核心项目 这是我的密码: 。控制器.NET内核 [Route("api/[controller]")] public class ValuesController : Controller { [HttpGet] public UserDto Get(Int32 i

我在解决方案中添加了一个新的ASP.NET核心Web应用程序Web API项目

我知道我不能在这个项目中使用EF6,但我想知道是否有办法让另一个使用.NET Framework的项目完成这项工作,并将数据传递回.NET核心项目

这是我的密码:

。控制器.NET内核

[Route("api/[controller]")]
public class ValuesController : Controller
{
    [HttpGet]
    public UserDto Get(Int32 id)
    {
        Models.UserDto user = UserHelper.Get(id);

        if (user == null)
            throw new Exception();

        return user;
    }
}
。Net内核

public class UserHelper
{
    public static UserDto Get(int id)
    {
        User user = UserController.Get(id);
        return Map(user);
    }

    private static UserDto Map(User user)
    {
        if (user == null)
            return null;

        UserDto dto = new UserDto();
        dto.Id = user.ID;
        dto.Lastname = user.LastName;
        dto.Firstname = user.FirstName;
        dto.Email = user.Email;
        dto.Username = user.Username;
        dto.PhoneNumber = user.PhoneNumber;
        dto.CustomerId = user.CustomerID;
        return dto;
    }
}
。控制器.NET框架

public static User Get(int id, UserStateCriteria criteria)
    {
        InputCheckerHelper.CheckNull<UserStateCriteria>(criteria, "criteria");

        using (NContext uow = new NContext())
        {
            var query = uow.Users
                           .Include(u => u.ConsoleUsers)
                           .Include(u => u.Devices)
                           .Include(u => u.Culture)
                           .Include(u => u.Product)
                           .Include(u => u.Customer)
                           .Include(u => u.ProductCredentials.Select(pc => pc.Database.DatabaseConnector))
                           .Include(u => u.ProductCredentials.Select(pc => pc.Database.DatabaseConnector.Methods.Select(m => m.Headers)))
                           .Include(u => u.ProductCredentials.Select(pc => pc.Database.DatabaseConnector.Methods.Select(m => m.Parsers)))
                           .Include(u => u.ProductCredentials.Select(pc => pc.Database.DatabaseConnector.Methods.Select(m => m.ConfigurableConnectorFieldRenamings)))
                           .Include(u => u.ProductCredentials.Select(pc => pc.Database.DatabaseConnector.Methods.Select(m => m.ConfigurableConnectorErrorMappings)))
                           .Include(u => u.Subscription.Edition)
                           .Where(u => u.ID == id);

            query = ApplyStateCriteriaOnQuery(criteria, query);

            return query.FirstOrDefault();
        }
    }
我在SO和其他网站上搜索了一个类似于我的案例,但没有什么帮助

我之所以在这里提问,是因为在微软的网站上:

在ASP.NET核心应用程序中使用Entity Framework 6的推荐方法是将EF6上下文和模型类放在以完整框架为目标的类库项目中

但在参考我的BLL和DAL项目后,我得到:


System.IO.FileNotFoundException:'无法加载文件或程序集'EntityFramework,版本=6.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089'。系统找不到指定的文件。

只有当核心应用程序实际运行在完整框架上时,您才能使用。原因很简单,您不能从非完整框架项目中引用完整框架库。API足迹不一样


然而,即使您在完整的框架上运行,您仍然必须有一个单独的项目,例如类库,以实际容纳您的上下文和迁移。这是因为您需要与EF6一起使用的PMC命令与核心项目不兼容。

您是否在MVC应用程序和类库中引用了完整的.Net framework?您是否检查了nuget软件包和版本等?EntityFramework v6.1.3安装在两个引用的项目上,并且它们都存在于my.csproj中,因为没有项目文件,很难猜测出哪里出了问题。您是否检查了microsoft提供的示例解决方案?您尝试过将EntityFramework添加到MVC项目吗?@Scrobi我尝试过,但包还原失败。正在回滚“N.Server.Core.WebAPI”的包更改@Spindler我仍在探索他们的解决方案。