1

ログインエンティティが正しく行われているかどうかをチェックするクラステストを使用していますが、データベースでクエリを返さないと思われるエラーが発生しますが、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;
            }
        }

Entity Framework 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; }
    }

ありがとうございました。

4

2 に答える 2

0

私たちにとって、この種のエラーは、正しい接続文字列が EF に渡されなかったために生成されました。NUnit を使用している場合、NUnit は app.config または web.config を使用しません。assembly.dll.config または nunit project.config を作成する必要があります。構成ファイルの使用法については、NUnit のドキュメントを確認してください。

デバッグ モードで DbContext.Database とそのプロパティを調べることで、NUnit に渡された接続文字列を確認できます。

設定値を確認すると、問題が解決するはずです。

于 2012-10-13T13:16:59.103 に答える
0

私は想像するだろう

if (consulta.Count() > 0)

エラーをスローしていますか?

あなたはそれをに変更することができます

if (consulta != null && consulta.Count() > 0)
于 2012-10-12T17:07:43.580 に答える