EF核心的自定义模型构建

问题描述 投票:0回答:2

我有一个模型,我想从除EF Core之后的数据库以外的其他源中加载其列之一,例如MongoDb。

问题是我无法确定如何在EF Core中覆盖查询执行。对于“保存”,这是确定的,因为EF Core允许我们覆盖SaveChanges并执行自己的逻辑。

对于阅读部分,我决定通过其getter访问器延迟加载列。目标是在我们的代码中进行尽可能少的更改(我们有许多使用EF Core加载项目的项目,并且我不想以破坏该特定对象的所有查询的方式更改代码)。 >

但是如何将我的MongoDb服务注入模型?对于ASP.Net Core,我们可以创建自定义模型绑定程序,但是对于EF Core,如何让自定义模型绑定程序或模型创建者注​​入服务以进行建模?我可以使用像Ninject或AutoFac这样的依赖注入器吗(我只是听说过它们,对它们没有任何经验)?它们可以与EF Core一起使用吗?

我有一个模型,我想从除EF Core之后的数据库以外的源(例如MongoDb)中加载其列之一。问题是我不知道如何在...

asp.net-core entity-framework-core ninject autofac custom-model-binder
2个回答
0
投票

您的设计从根本上被破坏了。 EF Core是一种用于关系数据库的ORM,特别是每个上下文只能在一个数据库上使用。您应该通过EF Core代码(而不是通过内部使用EF Core和MongoDB驱动程序的某种服务类)来进行多个数据源的组合。您的应用程序代码应然后利用此服务,而不是直接使用EF Core。试图将其破解到上下文代码中是100%错误的方法。


0
投票
您可能必须在内存中进行映射。我不知道这在您的特定情况下是否可行。这意味着您必须先加载,然后才能使用自动映射器或其他映射器进行映射。您将需要在ef之上添加一个抽象,以便在其中注入映射机制。 Ef核心链接提供程序将无法将您需要的内容转换为SQL查询。
© www.soinside.com 2019 - 2024. All rights reserved.