测试框架说实体没有为内置实体定义的密钥

bea*_*ean 8 c# unit-testing entity-framework asp.net-mvc-5.1

Castle.Proxies.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.  
Run Code Online (Sandbox Code Playgroud)

我正在尝试为我的MVC 5.1项目设置测试,该项目使用EntityFramework版本6.1,AspNet.Identity.Core版本2.0,AspNet.Identity.EntityFramework版本2.0.我唯一的测试用例非常简单,一旦我尝试运行,它就会出现"IdentityUserLogin"和实体类型"IdentityUserRole"的错误.问题是,据我所知,这两个实体都定义了密钥!因为它们是由框架提供的.我无法在我的代码第一部分中明确地看到他们的描述,但在数据库中我可以看到他们都有密钥.

在我的测试项目中,我使用的是Microsoft.VisualStudio.TestTools.UnitTesting和Moq(以及EF和Identity Core库).

任何帮助或只是指向资源将非常感激.我找不到有类似错误的人.

小智 17

我遇到了同样的问题,最终能够通过创建模拟来运行测试,如下所示:

var mockContext = new Mock<MyDbContext>() { CallBase = true };
Run Code Online (Sandbox Code Playgroud)

据我所知,Mock否则不会调用基类实现.那些密钥可能会在基类实现中定义 - 我猜 - OnModelCreating.