Я установил шаблон STE задолго до обновления до VS 2010 SP1, и у меня нет этой проблемы.
Проверьте определение NeedsHandleCascadeDeleteMethod
в EF.Utility.CS.ttinclude
.Вы найдете этот файл в C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes
(если вы использовали путь установки по умолчанию для VS).Метод должен быть определен следующим образом:
/// <summary>
/// True if this entity type requires the HandleCascadeDelete method defined and the method has
/// not been defined on any base type
/// </summary>
public bool NeedsHandleCascadeDeleteMethod(ItemCollection itemCollection, EntityType entity)
{
bool needsMethod = ContainsCascadeDeleteAssociation(itemCollection, entity);
// Check to make sure no base types have already declared this method
EntityType baseType = entity.BaseType as EntityType;
while(needsMethod && baseType != null)
{
needsMethod = !ContainsCascadeDeleteAssociation(itemCollection, baseType);
baseType = baseType.BaseType as EntityType;
}
return needsMethod;
}
Также проверьте ваш шаблон STE, используемый в проекте (часть для сущностей, а не часть для контекста).Он должен использовать метод только один раз, вызвав:
// If this entity type participates in any relationships where the other end has an OnDelete
// cascade delete defined, or if it is the dependent in any identifying relationships, it needs
// an event handler to handle notifications that are fired when the parent is deleted.
if (ef.NeedsHandleCascadeDeleteMethod(ItemCollection, entity))
{
Если вы видите что-то еще, ваш шаблон, вероятно, каким-то образом поврежден или вы изменили его.Попробуйте установить его снова.