C# 通过另一个项目引用.NETCore中的实体框架6
我在解决方案中添加了一个新的ASP.NET核心Web应用程序Web API项目 我知道我不能在这个项目中使用EF6,但我想知道是否有办法让另一个使用.NET Framework的项目完成这项工作,并将数据传递回.NET核心项目 这是我的密码: 。控制器.NET内核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
[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我仍在探索他们的解决方案。