Я мог бы просто вернуть каждый столбец, но это кажется очень неэффективным. Но когда я возвращаю подмножество, оно кричит на меня, потому что я не предоставляю все поля в модели. И когда я попытался создать две модели, он кричал мне, что они обе не могут указывать на одну и ту же таблицу в базе данных.
Я использую Blazor и .NET 8 с Entity. Framework Core.
Приведу здесь простой пример, который поможет объяснить мой вопрос. У меня есть таблица, сопоставленная с моделью, а также две страницы, которые хотят взаимодействовать с этой моделью. Клиентская часть, которая показывает клиенту только основную информацию, и CRUD на стороне администратора, которая позволяет добавлять/редактировать данные и просматривать дополнительные столбцы, недоступные клиенту.
Давайте используем базовую модель сотрудника следующим образом:
Код: Выделить всё
public class Employee
{
[Key]
public int ID {get; set;}
public string Name {get; set;}
public decimal Salary {get; set;}
}
Код: Выделить всё
public async Task GetListAsync()
{
var result = await _context.dbEmp
.FromSqlRaw("Exec getEmployees")
.ToListAsync();
return result;
}
Код: Выделить всё
SELECT ID, [Name]
FROM EmployeeTable
Код: Выделить всё
public async Task GetListEditAsync()
{
var result = await _context.dbEmp
.FromSqlRaw("Exec getEmployeesEdit")
.ToListAsync();
return result;
}
SELECT ID, [Name], Salary
FROM EmployeeTable
Дополнительно я попробовал:
Код: Выделить всё
[NotMapped]
Тогда я попробовал просто сделать две модели: одну для внешнего интерфейса и одну для CRUD. За исключением того, что во время выполнения я получаю сообщение об ошибке, говорящее, что я не могу сопоставить две модели с одной и той же таблицей в базе данных.
Итак, как лучше всего это сделать, кроме простого возврата всех данные в обоих случаях?
Спасибо, дайте мне знать, если вам нужна дополнительная информация, разъяснения или что-то еще.
Подробнее здесь: https://stackoverflow.com/questions/783 ... same-model