У меня есть две таблицы:
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
}
и:
public class UsersAccessDepartments
{
public int Id { get; set; }
public string UserId { get; set; }
public int DepartmentId { get; set; }
}
Данные выглядят следующим образом: Отдел
1 Management
2 Finiance
5 Reciption
UsersAccessDepartments:
1 9c424b6e-fd57-4be7-b47a-2db67b29f651 1
2 9c424b6e-fd57-4be7-b47a-2db67b29f651 2
3 9c424b6e-fd57-4be7-b47a-2db67b29f651 3007
4 9c424b6e-fd57-4be7-b47a-2db67b29f651 3008
5 c4beb529-bb86-439e-a375-4f4cce3f9054 1
6 c4beb529-bb86-439e-a375-4f4cce3f9054 2
7 247779db-ad5f-4128-ae40-7f44cc3c0c71 3007
Я хотел бы выбрать отделы с новым полем, показывает, запрашиваемый пользователь находится в отделе или нет: это SQL, и это работает:
Select D.Id, D.Name,
IIF((select UA.Id from UsersAccessDepartments UA where UA.DepartmentId=D.Id and
UA.UserId='247779db-ad5f-4128-ae40-7f44cc3c0c71') is null ,
'false','true') Selected
from Department D
Вот эти результаты выглядят:
Id Name Selected
1 Management false
2 Finiance false
5 Reciption false
2005 CFO false
3007 IT true
3008 Cashier true
На страницах бритвы asp.core я могу использовать только:
db.Department.FromSql(sql)
, который принимал файлы из одной таблицы.Или я должен использовать:
db.Database.ExecuteSqlCommand(sql);
, который не возвращает данные.последний доступный вариант для использования ADO.Net
command.CommandText = "Your Sql Query";
context.Database.OpenConnection();
using (var result = command.ExecuteReader())
{
// do something with result
}
, и я не хочу использовать этот.Мой вопрос:
Могу ли я запустить выше sql с использованием ядра EF?
как создать оператор Linq, эквивалентный моему вышеупомянутому запросу select?