Ответ на ваш заглавный вопрос: да, это прекрасное решение для базы данных только с таблицами (и точка может вырасти, когда ваша база данных вырастет, включив в нее другие конструкции базы данных, такие как представления и хранимые процедуры).
- Довольно мелко. Основное отличие, которое вы обнаружите, заключается в том, что определенные методы, которые работают с Linq2Objects, не работают для Linq2SQL. Вы должны быть осторожны при смешивании объектов и Linq2SQL вместе. Вы поймете, что попали в это, когда получите исключение, говорящее что-то вроде «Единственное, что мы поддерживаем - это Содержит».
- Довольно.
- Вы, вероятно, обнаружите, что в определенных ситуациях Linq2SQL не генерирует наиболее эффективный SQL.
- Иногда с транзакциями может быть сложно.
- Нет обновлений. Каждый раз, когда вы хотите обновить набор записей, вы должны выбрать их, обновить каждую, а затем
SubmitChanges()
.
- Если только вы не делаете выбор, вам нужен первичный ключ на вашем столе. Без первичного ключа вы не можете удалить или обновить.
- Linq2SQL напрямую не поддерживает отношения «многие ко многим».
- Простое решение состоит в том, чтобы настроить задачу предварительной сборки, которая генерирует ваши DataContexts Linq2SQL при каждой сборке.
Что касается вашей цели использования Linq2SQL для всего, будьте готовы к некоторым неприятным запросам LINQ (и неприятным циклам отладки). Синтаксис объединения является многословным, и в зависимости от сложности ваших запросов его обслуживание может стать сложнее, чем в эквиваленте SQL. Группировать не так просто, как GROUP BY
.