0

我向内容部分添加了一个简单的字段

ContentDefinitionManager.AlterPartDefinition("CarouselContentPart", b =>
            b
            .WithField("AutoPlay", cfg =>
                cfg.OfType("NumericField")
                    .WithSetting("NumericFieldSettings.Hint", "Enter a value in milliseconds for autoplay (leave blank for no autoplay)")
                    .WithSetting("NumericFieldSettings.Required", "false")
                    .WithDisplayName("Autoplay"))
            );

        return 18;

它被添加了两次,现在我无法删除它,无论是通过另一个迁移还是通过后台。这是堆栈跟踪

发生了未处理的异常,请求被终止。请刷新页面。如果错误仍然存​​在,请返回 Sequence contains more matching element System.InvalidOperationException: Sequence contains more matching element at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable 1 source, Func2 predicate) at Orchard.ContentManagement.MetaData.Builders。 C:\Development\FE-Corporate\src\Orchard\ContentManagement\MetaData\Builders\ContentPartDefinitionBuilder.cs 中的 ContentPartDefinitionBuilder.RemoveField(String fieldName):Orchard.ContentTypes.Services.ContentDefinitionService 的第 46 行。<>c__DisplayClass48.b__47(ContentPartDefinitionBuilder typeBuilder ) 在 Orchard.ContentManagement.MetaData.ContentDefinitionManagerExtensions.AlterPartDefinition(IContentDefinitionManager 经理,字符串名称,1 alteration) in C:\Development\FE-Corporate\src\Orchard\ContentManagement\MetaData\IContentDefinitionManager.cs:line 32 at Orchard.ContentTypes.Services.ContentDefinitionService.RemoveFieldFromPart(String fieldName, String partName) at Orchard.ContentTypes.Controllers.AdminController.RemoveFieldFromPOST(String id) at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2个参数)在System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult2.CallEndDelegate(IAsyncResult asyncResult) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) 在 System.Web.Mvc.Async。 AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在系统。 Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()

4

1 回答 1

0

如果您的新内容部分中没有任何重要数据,您可以尝试通过迁移删除并重新创建它。

这将使您丢失为内容部分保存的所有数据,但也将给您一个彻底休息的机会。

您可以像这样删除内容部分:

    public int UpdateFrom18() {
        // remove the CarouselContentPart part cleanly
        ContentDefinitionManager.DeletePartDefinition(typeof (CarouselContentPart).Name);
enter code here
        // re-add the CarouselContentPart again
        // NOTE: Change this bit to add include whatever you have created in your previous 17 migrations such as setting up the part and adding fields
        ContentDefinitionManager.AlterPartDefinition(typeof (CarouselContentPart).Name,
            cfg = > cfg
            .Attachable()
            .WithDescription("Some kind of description, etc"));
        return 4;
    }
于 2016-02-09T14:57:21.313 回答