我正在使用一个类测试来检查正在正确完成的登录实体,但是发生了一个错误,似乎没有返回数据库中的查询,而是在 ASP.NET 中开发的应用程序 MVC 3 Code First 查询返回数据,我会知道出了什么问题以及可以做些什么来解决它。
查询返回后,在变量中给出以下消息:"枚举未产生任何结果"
测试方法:
[TestMethod()]
public void efetuarLoginTest()
{
EntidadeRepository target = new EntidadeRepository();
string cnpj = "12345678";
string senha = "lalado";
Entidade expected = null; // TODO: Initialize to an appropriate value
Entidade actual;
actual = target.efetuarLogin(cnpj, senha);
Assert.AreNotEqual(expected, actual);
}
具有返回登录查询任务的实体的方法存储库:
public Entidade efetuarLogin(string cnpj, string senha)
{
var consulta = from usu in bd.Entidades
where usu.cnpj == cnpj && usu.senha == senha
select usu;
if (consulta.Count() > 0)
{
Entidade e = new Entidade();
e.id_entidade = consulta.First().id_entidade;
e.razao_social = consulta.First().razao_social;
e.cnpj = consulta.First().cnpj;
e.senha = consulta.First().senha;
return e;
}
else
{
return null;
}
}
使用实体框架 4.1 的类持久性数据库:
internal class BancoDados: DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingEntitySetNameConvention>();
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
public DbSet<Entidade> Entidades { get; set; }
public DbSet<Estado> Estados { get; set; }
public DbSet<Administrador> Administradores { get; set; }
public DbSet<Leilao> Leiloes { get; set; }
public DbSet<Lance> Lances { get; set; }
}
谢谢。
,这种错误是由于正确的连接字符串未传递给EF而生成的。如果您使用的是 NUnit,NUnit 不使用您的 app.config 或 web.config,则必须创建 assembly.dll.config 或 nunit project.config。请查看 NUnit 文档以了解配置文件的用法。
可以通过在调试模式下检查 DbContext.Database 及其属性来验证传递给 NUnit 的连接字符串/
检查您的配置值应该可以解决您的问题。
我会想象
if (consulta.Count() > 0)
是否抛出错误?
您可以将其更改为
if (consulta != null && consulta.Count() > 0)