Следует избегать небольшого времени ожидания, так как поток, отказывающийся от своего временного интервала, получает повышение приоритета при повторном сигнале, что может привести к высоким переключениям контекста. В многопоточных / серверных приложениях это может привести к нежелательному эффекту, поскольку потоки борются за процессорное время. Вместо этого полагайтесь на асинхронные функции и объекты синхронизации, такие как критические секции или мьютексы / семафоры.
Вы столкнулись с одним из слабых мест EF v1. На данный момент да, переход с AutoMapper определенно позволяет вам преобразовывать ваши EF-сущности в «прямые» бизнес-сущности и использовать их на своем более высоком уровне.
Кроме того, EF v4, который должен появиться в .NET 4.0 / Visual Studio 2010 должна значительно облегчить многие из проблемных областей - поддержку ваших собственных прямых объектов POCO (обычные старые объекты CLR) и многое другое. Посетите Блог EF Design . В последнее время команда опубликовала ряд очень интересных и многообещающих постов, касающихся EF v4. Я с нетерпением жду этого!
Марк
Вы можете использовать объекты EF в веб-проекте, если вы извлекаете их интерфейсы в свой основной / общий проект и возвращаете типы интерфейсов из репозитория или служб, которые использует веб-проект. Вы можете заставить объекты EF реализовывать ваши интерфейсы, создав частичные классы и добавив прямо здесь:
частичный класс Клиент: ICustomer
Даже если вы можете сделать 1. трюк, вам, вероятно, в любом случае следует использовать автомаппер для сопоставления этих сущностей с вашим пользовательские объекты ViewModel, соответствующие вашему конкретному виду. Вы также можете сделать так, чтобы методы запросов репозитория / сервисов возвращали DTO / ViewModels напрямую - это позволит иногда сделать запросы более эффективными (запрашивать только необходимые столбцы и т.д.), но для этого потребуются дополнительные сопоставления EF.