我在我的解决方案中添加了一个新的ASP.NET核心Web应用程序(Web API)项目。通过另一个项目.NET Core中的参考实体框架
我明白我不能在这个项目中使用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 Framework)的
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和其他网站的类似地雷的情况下,但它不是非常有帮助。
我只是要求在这里,因为在微软的网站it says:
使用实体框架6在ASP.NET核心应用的推荐方法是放在一个类库项目的EF6背景和模型类以整个框架为目标。
但引用我的BLL和DAL项目后,我得到:
System.IO.FileNotFoundException: 'Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.'
您是否已经在您的MVC应用程序和类库中引用了完整的.Net框架?你有检查你的nuget包和版本等? –
EntityFramework v6.1.3安装在两个引用的项目上,并且它们作为' '>存在于我的.csproj目录中。 –
Superslinky
没有项目文件很难猜测出现了什么问题。你是否检查过微软的示例解决方案? https://github.com/aspnet/Docs/tree/master/aspnetcore/data/entity-framework-6/sample –