UserManager.FindByName() 抛出 EntityCommandExecutionException。为什么使用 "EXTENT1"."USERNAME1"?

UserManager.FindByName() throwing EntityCommandExecutionException. Why is it using "EXTENT1"."USERNAME1"?

我正在使用 Oracle DB、Entity Framework、Microsoft ASP.NET Identity、OWIN 和 OWIN-MixedAuth

UserManager.FindByName(name) 的执行中,我得到:"EntityCommandExecutionException: An error occurred while executing the command definition." 内部异常是 OracleException: ORA-00904: "Extent1"."USERNAME1": 无效标识符。 “

我在数据库中没有名为 "USERNAME1" 的列是完全正确的,身份框架找不到该列是有道理的。问题是:我不知道为什么要从该列开始寻找。 IdentityUser.UserName 在 DbContext 中显式映射,如下所示:

modelBuilder.Entity<MyUser>().Property(r => r.UserName).HasColumnName("USERNAME");

我在我的代码中搜索了 "USERNAME1" 以防万一我在某处有一个定义错误的魔术字符串,但在我的代码中找不到任何结果。我已经搜索过这个错误,但似乎我是唯一一个从框架内部得到这种错误的人。

任何人都可以想到它获取此列名称的任何地方以及我如何更正它吗?

提前致谢。

当您告诉 EF 一个实体上的 A 列是另一个实体上 B 列的 primary/foreign 键时,就会出现这些 "phantom" 列。如果关系配置错误,会发生的情况是其中一列被复制并添加了一个数字,并且该列用作键,而不是您最初想要的列。这是您的实体如何设置的问题。