簡體   English   中英

無法解析 OrchardCore.ContentManagement.Metadata.IContentDefinitionManager 類型的服務

[英]Unable to resolve service for type OrchardCore.ContentManagement.Metadata.IContentDefinitionManager

我創建了一個 class 'ProductPart',這些實體將在 Sql DB 中創建。

 public class ProductPart : ContentPart
    {
        public decimal UnitPrice { get; set; }
        public string Sku { get; set; }
    }

為了在 SQL 中表示這些實體,我們必須通過遷移 go 和 class 看起來像下面的那個

 public class Migrations : DataMigration
    {
        private readonly IContentDefinitionManager _contentDefinitionManager;
        public Migrations(IContentDefinitionManager contentDefinitionManager)
        {
            this._contentDefinitionManager = contentDefinitionManager;
        }
        public int Create()
        {
            CreateTable();
            UpdateForm1();
            return 1;
        }

        private void CreateTable()
        {
            SchemaBuilder.CreateTable(nameof(ProductPart), table => table
           .Column<int>("Id", column => column.PrimaryKey().NotNull())
           .Column<decimal>("UnitPrice")
           .Column<string>("Sku", column => column.WithLength(50))
            );
        }

        private void UpdateForm1()
        {
            _contentDefinitionManager.AlterPartDefinition(nameof(ProductPart), part => 
                 part.Attachable()
                .WithDisplayName("Product")
                .WithDescription("Add products to the content."));
        }

        
    }

在啟動 class 中,我創建了一個 scope 實例,即

 public void ConfigureServices(IServiceCollection services)
        {   
            services.AddContentPart<ProductPart>();
            services.AddScoped<IDataMigration, Migrations>();
            services.AddOrchardCms();
            
        }

最后,當我運行它時,我收到以下錯誤。

*> 某些服務無法構建(驗證時出錯

服務描述符“ServiceType:OrchardCore.Data.Migration.IDataMigration Lifetime:Scoped ImplementationType:OrchardWebSiteModule.Migrations”:嘗試激活“OrchardWebSiteModule.Migrations”時無法解析“OrchardCore.ContentManagement.Metadata.IContentDefinitionManager”類型的服務。)*

我遇到了與您完全相同的問題,經過一段時間的發現,我找到了可能對您有所幫助的解決方案。 首先,您可以在 Github Link上參考此問題。 因此,按照對該問題的解釋,您需要在自定義模塊的 Manifest.cs 文件中啟用 Content 模塊,我的 Manifest.cs 文件如下:

清單.cs

之后,您需要多做一步,就是移動這一行services.AddScoped<IDataMigration, Migrations>(); 從應用程序中的 Startup.cs 到自定義模塊中的那個。 我不確定確切的原因是什么,但我猜主應用程序中沒有啟用內容模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM