Я получил эту проблему после обновления проекта от netcoreapp2.0 до netcoreapp2.2.
я сделал это только путем редактирования TargetFramework
запись в .csproj
файл и забыл также вносить изменение launch.json
.
"program": "${workspaceFolder}/src/MyProject/bin/Debug/netcoreapp2.0/MyProject.dll"
Это означало, что VS Code всегда загружал старые 2,0 версии проекта. Я только обнаружил его после удаления всего в /bin
и /obj
, и затем это не будет работать вообще, пока я не определил 2.0
в пути выше.
Наша стратегия именования обычно основана на объединении трех букв акронимы ( TLA ), представляющие различные «измерения» базы данных, разделенные подчеркиванием. Это правило применяется к сайтам, приложениям, клиентам и т. Д.
Например, если в моем приложении используется аббревиатура ABC
, а наш офис в Объединенных Эмиратах является подписчиком базы данных ABC, это имя базы данных будет тогда be ABC_UAE
(Использование официального / ISO TLA страны, конечно, хороший выбор).
После того, как вы дадите своим клиентам идентификатор TLA, вы можете использовать его для создания имени вашей базы данных:
ABC_ACM
: для основной / центральной базы данных ABC для компании Acme ABC_ACM_CAN
: для своих подписчиков в Канаде Теперь, если вы поддерживаете разные версии базы данных, у вас есть выбор между:
ABC_012_ACM
, если версия 1.2 поддерживается для нескольких клиентов
ABC_ACM_012
, если у Acme есть свои специфические 1.2 версия
В случае, если у этих баз данных есть подписчики, значение ABC_ACM_012_CAN
тогда совершенно очевидно. Я бы посоветовал вам использовать стандартную трехзначную нумерацию для номеров версий. Это действительно упрощает жизнь!
Это правило имеет некоторые исключения, когда речь идет о базах данных для разработки. Например, моя версия базы данных ABC_ACM
для разработчика будет иметь вид ABC_ACM_pgrondier
, если разработка ведется клиентом, или ABC_012_pgrondier
, если разработка поддерживается версией. Собственно говоря, имея последний измерение 'имени базы данных, не реализующее правило TLA, также довольно распространено, когда вы обращаетесь к отдельным подписчикам:
ABC_ACM_012_username
является подписчиком на ABC_ACM_012
ABC_ACM_012_CAN_username
1142CAN256 для подписчика на
Создание Developmestuction , где вы иметь несколько экземпляров одной и той же базы данных (Dev, Production) на одном сервере базы данных просто вызывает проблемы. Если вы не можете получить второй сервер (физический или виртуальный), вам следует подумать о создании отдельных экземпляров SQL Server.
Имя вашей базы данных должно отражать ваше внутреннее обращение к приложениям. Вы писали:
У нас есть клиенты с несколькими версиями одного и того же приложения и несколькими приложениями для одного клиента
Непонятно, о чем вы. Возьмите одну из своих "базовых" приложения, а затем настроить приложение для разных клиентов? Вы создаете совершенно разные приложения для разных клиентов? Это смесь того и другого?
Я предполагаю, что вы начинаете с разработки одноразового приложения и, если оно нравится другому клиенту, используете его в качестве базового приложения для будущих клиентов. Исходя из этого, было бы разумно ссылаться на ваши приложения по имени + клиенту и соответствующим образом называть свои базы данных.
Мне нравится включать имя сайта в мои схемы именования баз данных, когда это возможно:
client_sitename_app_version
Если у одного клиента есть несколько приложений, работающих с одной и той же версией на одном сайте, каждому из них нужна собственная база данных .. Это кажется немного странным. В зависимости от варианта использования вам понадобится еще один отличительный фактор. Добавьте номер экземпляра или ссылку на использование в самом конце.
Мы используем {product} {version} {Development | Test} _ [необязательное описание функции, владелец, дата]
Его длинный, но означает, что каждую базу данных можно отслеживать, и у каждой базы данных есть идентификатор владельца. Итак, основная база данных продукта для версии 4.2 - это, скажем, Product42Development
... и с ней связана база данных однорангового тестирования Product42Test
.
База данных однорангового тестирования отделена от основная тестовая база данных (которая находится на другом сервере и используется исключительно командой тестирования): это то место, где разработчики вносят свои исправления, прежде чем вносить их в основное дерево, проверяя ее другими разработчиками (следовательно, равноправный тест), но сохраняя ее вне активной разработки (которая постоянно меняется и нестабильна).
Если существует ветвь базы данных, необходимая из-за того, что кто-то занимается очень разрушительной разработкой, она должна включать имя функции, владельца функции и дату создания. Что-то вроде: Product42Development_NewFeatureName_OwnerName_20090812
... это гарантирует, что администраторы баз данных не только смогут отслеживать, какие базы данных существуют, но (что более важно) так же могут и все другие разработчики, чтобы они не возились с базой данных без частично информированы о том, для чего существует БД.
Мы используем изоляцию контейнера для запуска различных экземпляров / кратных версий баз данных (postgres и mysql), но проблема схемы именования остается той же. Мы следуем следующему:
Имя клиента + идентификатор продукта + тип задачи (продукт, постановка, тест, учет и т. Д.)
например: nuxil_erp_test, nuxil_erp_prod, nuxil_erp_accountingTraining.
Однако мы, вероятно, позволим отказаться от этой схемы именования, потому что у клиентов есть возможность создавать новые базы данных, и у всех есть свои собственные идеи по именованию баз данных.
Echoing the prior posts and tossing in some comments:
Definitely, Company/Client and Application. Which goes first depends on which is more important--not to the client, but to the people supporting the software.
I totally agree that only Production systems should be on a Production server. Development, Testing, QA, Staging, EAP, whatever, they're all best served by being on their own box, SQL instance, or VMWare instance. ("Developmestuction". Love it.)
I question adding version to the database name. Can a database of version X be updated to version X+1 or X.1? If so, do you have to dig out and rename all your connection strings and other bits referencing database names? Versioning data is information I would (and do) store within each database. If an upgrade means migrating the data in an old database to a newly constructed one, I guess you could put the version in the name. And if you have to actively support multiple versions of a given database "type", AND it's useful for the people supporting the system to have that information clearly stated in the database name, then go for it (though again, beware updating/renaming issues).
В одной из крупных компаний, с которыми я работал в прошлом году, внедряя набор инструментов, проданный моим работодателем, мы следовали их региональным соглашениям об именах :
US
{p | d}
, где p для производства, а d для разработки UK + HK
{p | d}
Это работает для них. Лично я также называю свои экземпляры базы данных по имени приложения и использованию.