我在我的解決方案中添加了一個新的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 –