我希望将我的.NET Core EntityFramework
根据Nkosi的建议,我从上下文中删除了
但它返回了
DbContext
(位于.NET标准库中)注入到我的WPF应用程序中。我尝试了这种Unity方法:
OnStartup
var container = new UnityContainer();
container.RegisterType<ApplicationDbContext>();
var mainWindow = container.Resolve<MainWindow>();
base.OnStartup(e);
主窗口
private ApplicationDbContext _db;
[Dependency]
public ApplicationDbContext Db
{
get
{
return _db;
}
set
{
_db = value;
}
}
public MainWindow()
{
//StandardDatabase.Commands.Test();
InitializeComponent();
DataContext = this;
FrameContent.Navigate(new PageConsignments());
}
但是我在container.Resolve<MainWindow>()
处遇到了这个错误:
当前类型System.Collections.Generic.IReadOnlyDictionary`2[System.Type,Microsoft.EntityFrameworkCore.Infrastructure.IDbContextOptionsExtension]是一个接口,无法构造。您是否缺少类型映射?
有人知道我是否做错了什么吗?欢迎任何更好的方法建议。
ApplicationDbContext
public ApplicationDbContext() : base() { }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{ }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseLazyLoadingProxies()
.UseSqlServer("Server=L-TO-THE-APTOP\\SQLEXPRESS;Database=Maloli;Trusted_Connection=True;MultipleActiveResultSets=true");
optionsBuilder.ConfigureWarnings(x => x.Ignore(CoreEventId.LazyLoadOnDisposedContextWarning));
}
根据Nkosi的建议,我从上下文中删除了
ApplicationDbContext(options)
构造函数,这样就解决了错误。然而,我现在在MainWindow
中检查Db
的值:private ICommand goPack;
public ICommand GoPack
{
get
{
return goPack
?? (goPack = new ActionCommand(() =>
{
var c = _db.Parts;
FrameContent.Navigate(new PageConsignments());
}));
}
}
但它返回了
null
。
ICommand
构造函数调用后的值(我已更新问题)。 - BassieRegisterType
之后,container.Resolve<ApplicationDbContext>
就能正常工作。 - Bassie