【发布时间】:2021-09-17 08:40:14
【问题描述】:
我有一个类型,想创建一个新类型,基于这个类型,只是想更改名称。
例子:
var oldType = someObject.GetType();
var type = CreateNewType(oldType, "newType");
请允许我解释一下:
我正在动态创建多个数据库(通过在 EF Core 上下文中添加模型)。这很有效,但仅在第一次尝试时有效,但在第二次尝试时无效,因为他将以前的表保留为单例上下文(附加到我所看到的类型)。
【问题讨论】:
-
说真的……为什么? “基于”是什么意思?:源自?有不同名称的副本?什么?
-
我有一个动态的 EF Core 上下文。 DI 显然有一个单例数据库创建,它只在第一次尝试时有效。如果您创建具有动态行为的新数据库迁移,他将尝试添加之前添加的表。
-
我觉得这里没有足够的信息。我建议调查在 DI 中不使用单例(这样您可以启动不同的数据库上下文),或者使用不同的模式(iirc,默认值为 [dbo.],但您可以更改它)。
-
理论上它们是不同的上下文。模型不同,但它们是在运行时添加到同一类的。那就是问题所在。只需一种新类型就可以解决问题(见鬼)。