tech_lead = models.ForeignKey(User, related_name='tech_lead')
нарушает целостность, потому что ваша база данных уже заполнена Application
экземплярами. Если вы хотите добавить ненулевой FK в вашу схему, вам следует указать значение по умолчанию. В противном случае, если вы не можете предоставить значение по умолчанию, вам следует рассмотреть возможность разрешения tech_lead
быть НЕДЕЙСТВИТЕЛЬНЫМ, т.е. заполните поле желаемыми значениями:
from django.db import migrations
def populate_tech_lead(apps, schema_editor):
Application = apps.get_model('yourappname', 'Application')
for application in Application.objects.all():
application.tech_lead = application.assessment_owner
application.save()
class Migration(migrations.Migration):
dependencies = [
('yourappname', '0001_initial'),
]
operations = [
migrations.RunPython(populate_tech_lead),
]
и затем удалите null=True
из поля:
tech_lead = models.ForeignKey(User, related_name='tech_lead')
Я не очень знаком с входами и выходами COM +, но WCF был создан для замены его и Сервисы предприятия в платформе.NET. Все варианты использования, которые Вы упоминаете здесь, испеклись в платформу (объединение, транзакции, управление версиями), и в значительной степени тривиальны для кодирования против, пока Вы вставляете время, чтобы изучить, как это хочет сделать вещи. Когда Вы настроили вещи правильно, нет в значительной степени никакого предела тому, что можно сделать с ним.
WCF также подкрепляет многое из того, что Microsoft продолжает работать для непосредственного и долгосрочного будущего (Azure Services). Я считал бы это стоящими инвестициями Вашего приобретения знаний времени, особенно рассматривая Ваше образование COM +.
Я настоятельно рекомендовал бы книгу Juval Lowy как хорошую начальную точку. Он - вероятно, почти столь авторитетная речь, как Вы найдете на этом предмете.
Я также рекомендовал бы проверить его компанию веб-сайт IDESIGN. Мало того, что они предлагают превосходное обучение, но и у них есть очень полезная библиотека расширений WCF под названием ServiceModelEx, который обеспечивает много служебных классов расширений/помощника, которые делают Вашу жизнь WCF намного легче.
http://www.idesign.net/idesign/DesktopDefault.aspx
При поиске более учебной книги стиля книга Michele Leroux Bustamante также довольно хороша.
Если Вы хотите основанные на атрибуте транзакции на компонентах, WCF может сделать это для Вас. Кроме метафоры больше не компоненты как с COM +; это - теперь сервисы в WCF. Тонкий, но важный сдвиг. WCF полагается на ту же транзакционную инфраструктуру (DTC) как COM +.
Если Вы просто хотите COM + в.NET, это - EnterpriseServices - та же модель, все еще должен использовать развертывание DLL и управление версиями. Все еще может получить объединение, и т.д. Может также получить паузу/резюме и некоторые другие новые функции ES.
Если Вы просто хотите транзакционную модель программирования, можно использовать Систему. Пространство имен транзакций.
Что касается пулинга объектов - смотрят дважды. Может стоить вновь исследовать Ваше использование пулов объектов. Несколько лет назад, предположения промышленность, сделанная, или понимание, которое мы имели, w.r.t. стоимость инстанцирования объекта, привела нас к метафоре пула объектов. Сегодня те предположения и соглашения не могут быть допустимыми. Другими словами, пул объектов может или не может быть на самом деле полезен для Вашего приложения. Это находится все еще в ES, но это достойно рассмотрения, нужен ли Вам он.