0

「従業員」という名前のSQLテーブルがあります。このテーブルには、EMPLID、EMPNAME、EMPCONTACT、および EMPEMAIL の 4 つのフィールドがあります。Asp.net MVC アプリケーションを作成しています。私のモデルでは、以下に示すようにユーザークラスがあります:-

Class Users
{
    public string ID{get; set;}
    public string Name{get;set;}
    public string Contact{get;set;}
    public string Email(get;set;}
}

次に、ado.net を使用してデータベースからデータを取得し、コントローラーに送信するコードを以下に示します。

Class DatabaseAccess
{
    public List<Users> GetData()
    {
        List<Users> eachemployee = new List<Users>;
        Users user = new Users();

        SqlConnection conn = new SqlConnection(Connectionstring);
        con.open();
        SqlDataAdapter adp = new Sql Data Adapter("Select * From Employee",conn);
        Dataset ds = new dataset();
        adp.fill(ds,"Employee");

        for(int i=0;i<ds.tables[0].rows.count;i++) 
        {
            user.ID = ds.Tables[0].rows[i]["EMPID"].tostring(); 
            user.Name = ds.Tables[0].rows[i]["EMPNAME"].tostring();
            user.Contact = ds.Tables[0].rows[i]["EMPCONTACT"].tostring();
            user.Email = ds.Tables[0].rows[i]["EMPEMAIL"].tostring();
            eachemployee.Add(user);
       }
       return eachemployee;
   }

ここでの問題は、各従業員に常に同じデータの行が含まれていることです。以下に示すように、テーブルに 2 つの行がある場合:

Emp1, Gaurav, 888888888,abc@gmail.com
Emp2, Sharma, 999999999,xyz@gmail.com

次に、各従業員リストには、同じデータを持つ 2 つの行が含まれます。つまり、以下に示すように、両方の行が Emp2 データで構成されています。

Emp2, Sharma, 999999999,xyz@gmail.com
Emp2, Sharma, 999999999,xyz@gmail.com

上記の問題から抜け出すにはどうすればよいですか?その理由は何なのかさえ知りませんでしたか?

4

3 に答える 3

3

あなたの

Users user = new Users();

for ループ内。

コードでは、オブジェクトを 1 つだけ作成し、常にそれを変更して、リストに数回追加しています...

于 2013-02-16T14:38:57.477 に答える
1

あなたはちょうど好きかもしれません

for(int i=0;i<ds.tables[0].rows.count;i++){
eachemployee.Add(new User()
  { 
     ID = ds.Tables[0].rows[i]["EMPID"].tostring(),
     Name = ds.Tables[0].rows[i]["EMPNAME"].tostring(),
     Contact = ds.Tables[0].rows[i]["EMPCONTACT"].tostring(),
     Email = ds.Tables[0].rows[i]["EMPEMAIL"].tostring()
  });}
于 2013-02-16T14:40:55.193 に答える
0

ユーザー オブジェクトを 1 つだけ作成し、常に同じオブジェクトに値を割り当てます。

Users user = new Users();

この宣言を for 内に移動して、各行のユーザー オブジェクトを作成します。

于 2013-02-16T14:40:09.520 に答える