Asp.net core 无法在具有标识数据库的实体框架核心中绑定Include运算符
我正在使用ASP.NETCore+EFCore+Identity 2.0+DBFirst+存储库模式编写一个应用程序 从DB开始,我首先搭建一个现有的数据库(带有标识表),并在上下文中执行一些清理步骤,使其能够用于标识Asp.net core 无法在具有标识数据库的实体框架核心中绑定Include运算符,asp.net-core,asp.net-identity,entity-framework-core,eager-loading,ef-database-first,Asp.net Core,Asp.net Identity,Entity Framework Core,Eager Loading,Ef Database First,我正在使用ASP.NETCore+EFCore+Identity 2.0+DBFirst+存储库模式编写一个应用程序 从DB开始,我首先搭建一个现有的数据库(带有标识表),并在上下文中执行一些清理步骤,使其能够用于标识 从IdentityDbContext而不是DbContext继承它 public partial class SampleDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
public partial class SampleDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
其中CreatedBy是对AspNetUsers表中“Id”列的外键引用,作为include属性传递给我的存储库
现在,上面的GetAll()
命令抛出异常
InvalidOperationException: The expression '[x].CreatedBy' passed to the Include operator could not be bound.
有人能帮我解决这个问题吗?我花了一天多的时间在网上寻找解决方案,但什么都没有得到
附加说明:如果我在Include对象中引用自己的表,那么所有这些都可以正常工作。问题仅限于标识表
提前谢谢。看这个。。。可能会对您有所帮助。由于fluent配置中的所有
Ignore
调用,您的标识表出现问题。使用Ignore
时,您告诉EF这些类不是实体,因此指向它们的引用/集合属性将不会被视为导航属性(关系)。@IvanStoev:您是正确的。我可以理解导致问题的Ignore
,但是如果我忽略标识表的Ignore
,它会引发另一个异常,InvalidOperationException:无法将架构“”中的表“AspNetUsers”用于实体“IdentityUser”,因为它正用于另一个实体。
因为DB优先于我们使用的标识表忽略
。在使用标识表首先执行DB时,是否有任何其他选项可以避免忽略?请帮助。@MuqeetKhan在开始这个问题之前,我已经尝试过这个解决方案,但没有帮助:(@IvanStoev是对的。删除所有数据库集并忽略标识实体的解决方案在这里是不正确的。您的模型不完整,因此您不能使用include。也许可以先询问/查找如何在Db中使用标识。
InvalidOperationException: The expression '[x].CreatedBy' passed to the Include operator could not be bound.