c# - 测试框架说实体没有为内置实体定义的键

标签 c# entity-framework unit-testing asp.net-mvc-5.1

Castle.Proxies.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.  

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

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

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

最佳答案

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

var mockContext = new Mock<MyDbContext>() { CallBase = true };

据我了解,Mock 否则不会调用基类实现。这些键可能会在 - 我猜 - OnModelCreating 的基类实现中定义。

关于c# - 测试框架说实体没有为内置实体定义的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22907581/

相关文章:

c# - 以 XML 形式存储的查询字符串属性

c# - 使用 MVC 时实体模型的命名约定

bash - 在复杂的文件夹结构中进行测试

java - 如何为下面的类编写junit测试用例

c# - 没有这样的主机是已知的套接字连接

c# - 上传图像和模型 ASP.NET MVC 4

c# - 没有背景颜色的控制台文本填充

c# - 检索大型记录集时 DataReader 挂起

c# - 无法先从模型代码中删除 FK

c# - 我如何测试与 NUnit 的契约(Contract)?