Большой поклонник UPSERT, действительно сокращает код для управления. Вот иначе, я делаю это: Один из входных параметров является идентификатором, если идентификатор является ПУСТЫМ или 0, Вы знаете, что это - ВСТАВКА, иначе это - обновление. Предполагает, что приложение знает, существует ли идентификатор, таким образом, работа привычки во всех ситуациях, но сократит выполнение в половине, если Вы делаете.
Насколько я знаю, это невозможно, и это будет проблематично на машинах разработчика. Ссылки на файлы - это лучший способ. Обычно я организовываю проекты следующим образом:
$
-- TeamProject1
-- branches
-- trunk
Solution1.sln
-- lib
TestProject2.dll
-- src
-- test
TestProject1.csproj references TestProject2.dll from lib
-- TeamProject2
-- branches
-- trunk
Solution2.sln
-- lib
-- src
-- test
TestProject2.csproj
Таким образом, TeamProject1 не зависит от исходного кода TeamProject2 и содержит все необходимые зависимости. Если TeamProject2 изменится, это не обязательно будет нарушать TeamProject1.
Цитирую официальное руководство по TFS на CodePlex:
Если вы делитесь исходным кодом или двоичными файлами между проектами команды, у вас есть два варианта:
Ветвление. При таком подходе вы переносите исходный текст из другого командного проекта в ваше текущее решение. Это создает конфигурацию, которая объединяет источник из общего места и ваш проект на стороне сервера.
Workspace Mapping. При таком подходе вы переносите источник из другого командного проекта в рабочее пространство на вашем компьютере для разработки. Это создает конфигурацию, которая объединяет источник из проекта другой команды и ваш проект на стороне клиента.
Разветвление - это предпочтительный подход, поскольку он сохраняет отношения зависимости на сервере контроля исходного кода. Сопоставление рабочих пространств - это подход, применяемый только на стороне клиента, что означает, что вы и каждый разработчик должны создать сопоставление на своих компьютерах, а также на сервере сборки, чтобы успешно собрать приложение.
Разветвление добавляет дополнительные накладные расходы на слияние, но оно позволяет вам более четко принимать решение о получении обновленных двоичных файлов или исходных текстов.