2

В настоящее время я пытаюсь реализовать разделение проблем с использованием подхода DDD в веб-приложении.Linq-to-SQL и Entity Framework в том же проекте?

Я хочу, чтобы иметь возможность выполнять модульное тестирование, поэтому явное связывание моего пользовательского интерфейса, уровня обслуживания и уровня хранилища являются ключевыми факторами.

Я решил использовать Entity Framework для уровня репозитория, так как это позволит мне разделить контексты и сущности домена.

В настоящее время мы используем Linq-to-SQL в веб-приложении.

Есть ли какие-либо серьезные недостатки или красные флаги, которые мне нужно рассмотреть, прежде чем положить EF и L2S в одно и то же приложение? Или, прежде чем принимать этот подход вообще в этом отношении?

Цель состоит в том, чтобы использовать EF, продвигаясь вперед и медленно мигрировать код по мере того, как мы его касаемся, раскалывая вещи в их правильные контексты домена.

ответ

2

Вы можете использовать оба ORM в одном проекте без проблем. Есть несколько вещей, которые могут облегчить это.

  • Используйте одну строку соединения. По умолчанию Linq-to-Sql создает запись строки подключения в конфигурационном файле приложения, которая имеет очень длинное имя, например LinqToSql.Properties.Settings.MyDataContextConnectionString. Я бы удалил эту строку подключения и использовал ее для EF. Вам придется создавать экземпляры DataContext с помощью конструктора, который принимает параметр строки соединения:

    var connString = ConfigurationManager.ConnectionStrings["MyDbContext"].ConnectionString; 
    using (var db = new MyDataContext(connString)) 
    { 
        ... 
    } 
    

    Конечно, это легче обернуть это в контексте завода.

  • Использовать прозрачные пространства имен. Особенно в переходном сценарии Linq-to-Sql и EF могут (временно) использовать одни и те же имена классов (сгенерированные или созданные самим, если вы работаете с кодовым первым). Это очень удобно, если вы можете легко распознать правильные классы в intellisense.

  • В качестве альтернативы вы можете рассмотреть вопрос о сохранении кода Linq-to-Sql и EF в отдельных проектах.

 Смежные вопросы

  • Нет связанных вопросов^_^