Я бы использовал 3 уровня архитектуры в своем веб-проекте. DAL -> EF 4 обтекатель с классическим методом CRUD (AddEntity, RemoveEntity и так далее) BAL -> бизнес-логика и выгрузка запроса (selectByName, byCity, bySomeOtherProperty). UI - Aspx страница3 уровня приложения - навигационные свойства
Моя проблема в навигацииПродукция, открытая EF. Если у меня есть CustomerRepostiory, ASPX стороны я не хочу разрешить операцию лица, которые не являются клиентами, предположив follwing POCO класс:
public class Customer
{
public int Id {get; set;}
public string Name {get; set;}
public ICollection<Orders> Order{get;set;}
}
и ASPX вы выполнить что-то вроде этого:
var customer = bll.getCustomerByName("alex");
customer.Order.Add(new ..) // BAD, I don't want allow it
Что мне делать? Может быть, я должен создать оболочку класса poco, чтобы «скрыть» некоторые свойства? Какой действительно лучший подход?
Почему вы не хотите, чтобы это? Это потому, что вы хотите ограничить то, что можно сделать на уровне пользовательского интерфейса? Почему это BAD в вашем случае? –
Да, я хочу ограничить то, что можно сделать на уровне пользовательского интерфейса. Кроме того, мой BLL содержит методы Insert, Delete, Update и Save, поэтому они являются единственными, кто отвечает за операции CRUD. Каждая команда нуждается в некоторой проверке, если вы используете navigationProperty для добавления чего-то, я не могу выполнить никаких элементов управления. Вы должны пройти для метода Insert. – bit