gpt4 book ai didi

c# - 迁移未开始 - Autofac 抛出异常

转载 作者:太空宇宙 更新时间:2023-11-03 21:36:26 24 4
gpt4 key购买 nike

我创建了一个抑制依赖关系的模块,该依赖关系又抑制了 Orchard.Users.Services.MembershipService

当我尝试启用该模块时,orchard 崩溃并出现异常:

Autofac.Core.DependencyResolutionException: An exception was thrown while invoking the constructor 'Void .ctor(...)' on type 'MembershipService'. 

有一个内部异常(exception)

System.Data.SqlClient.SqlException: Invalid object name 'MyModule_MyModel'

当然,该表不会退出,但应该按照 Migrations.cs 的定义创建

using System;
using Orchard.Data;
using Orchard.Data.Migration;
using MyModule.Models;

namespace MyModule
{
public class Migrations : DataMigrationImpl
{
private readonly IRepository<SettingsRecord> _repository;

public Migrations(IRepository<SettingsRecord> repository)
{
_repository = repository;
}

public int Create()
{
SchemaBuilder.CreateTable("SettingsRecord", table => table
.Column<int>("Id", column => column.PrimaryKey().Identity())
.Column<string>("DefaultDomain")
);

return 1;
}
}
}

此迁移未开始的原因可能是什么?

更新:

public MembershipService(
IRepository<SettingsRecord> settingsRepository,
IRepository<DomainRecord> domainsRepository,
IOrchardServices orchardServices,
IMessageManager messageManager,
IEnumerable<IUserEventHandler> userEventHandlers,
IClock clock,
IEncryptionService encryptionService
)
{
_settingsRepository = settingsRepository;
_domainsRepository = domainsRepository;
_orchardServices = orchardServices;
_messageManager = messageManager;
_userEventHandlers = userEventHandlers;
_encryptionService = encryptionService;
Logger = NullLogger.Instance;
T = NullLocalizer.Instance;

_defaultDomain = _settingsRepository.Table.FirstOrDefault().DefaultDomain;

_baseMembershipService = new Orchard.Users.Services.MembershipService(orchardServices, messageManager, userEventHandlers, clock, encryptionService);
}

最佳答案

这一行是您问题的根源:

_defaultDomain = _settingsRepository.Table.FirstOrDefault().DefaultDomain;

不是在 ctor 中设置这个值,而是将它包装在一个属性中(并添加 null 检查)。

除了简单的赋值外,避免在 ctor 中放入任何逻辑。那里发生的任何错误很可能会炸毁您的网站。

关于c# - 迁移未开始 - Autofac 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com