0

私はエンティティ データ モデルに取り組んでおり、SQL Server 2005 DB のテーブルにレコードを挿入するメソッドを作成しました。レコードを挿入する前に、同じ名前のユーザーがテーブルに既に存在するかどうかを確認します。これはクラス ライブラリで、Asp.net Web アプリケーションでこれを参照しています。この Insert メソッドを Web アプリケーションから呼び出すと、「シーケンスに要素が含まれていません」という例外が発生します。

checkUserExist 関数をコメントすると、レコードが DB に挿入されます。

これが私のソースコードです。

public class EntityClass
{
    public static string InsertRecord(string username, string domain, string host)
    {
        bool isExist = false;
        bool returnNull = false;
        try
        {

            SolVeEntities entity = new SolVeEntities();
            User ud = new User();

            //before inserting user into the table, verify whether User already exist
            isExist = CheckUserExist(username);

            if (!isExist)
            {
                ud.username = username;
                ud.domain = domain;
                ud.host = host;
                ud.datetime = DateTime.Now;

                entity.Users.AddObject(ud);
                entity.SaveChanges();
            }
            else { returnNull = true;

            }
        }
        catch (Exception ex)
        {

        }

        if (returnNull)
        return "user " + username + " already Exist";
        else
            return username + domain + host;
    }

    private static bool CheckUserExist(string uname)
    {
        bool isExist = false;
        SolVeEntities entity = new SolVeEntities();
        User u1 = entity.Users.First(u => u.username == uname);
        if (u1.username == uname)
        {
            isExist = true;
        }
        else
        { isExist = false; }

        return isExist;
    }
}

提案/解決策を教えてください...ありがとう。User u1 = entity.Users.First(u => u.username == uname); の CheckUserExist メソッドで例外が発生しています。

4

1 に答える 1

0

CheckUserExist次のように書き直します。

private static bool CheckUserExist(string uname)
{
    using(SolVeEntities entity = new SolVeEntities())
    {
        return entity.Users.Any(u => u.username == uname);
    }
}
于 2013-01-17T07:20:26.017 に答える