私は単純なWCFアプリケーションで作業しており、リポジトリパターンを正しく設定することに問題があります。アプリケーションの通信パターンは、おおよそ図のようにhereです。リポジトリパターンを使用するときに列挙可能なオブジェクトを返す方法は?
Admin Console Mode
という部分には関心があります。このモードでは、管理者は、など、このモードのために必要なエンティティの1、Users
の
抽象契約を、ユーザーの追加や既存のユーザーを表示するようないくつかの管理機能へのアクセスを持って次のようになります。
public interface IUserRepository
{
byte AddUser(string _loginname, string _loginpass);
Users ShowAllUsers();
}
このリポジトリの
具体的な実装:
public class UserRepository : IUserRepository
{
public UserRepository(string connectionString)
{
_connectionString = connectionString;
}
public byte AddUser(string _loginname, string _loginpass)
{
. . .
}
public Users ShowAllUsers()
{
string query = "select login_name,created_time from users";
using(SqlConnection conn = new SqlConnection(_connectionString))
{
using(SqlCommand cmd = new SqlCommand(query, conn))
{
conn.Open();
using(var reader = cmd.ExecuteReader())
{
if(!reader.Read())
return null;
return new Users
{
Login_Name = reader.GetString(reader.GetOrdinal("login_name")),
Login_Pass = reader.GetString(reader.GetOrdinal("login_pass")),
Created_Time = reader.GetDateTime(reader.GetOrdinal("created_time")),
};
}
}
}
}
}
ホスト層から、どのように私は、オブジェクトがShowAllUsers
メソッドから返されたユーザーのリストにアクセスできますか?私はこの方法を試してみました:
public void ShowUsers()
{
Users user = _repo.ShowAllUsers();
Console.WriteLine("Name\tCreated Time");
foreach(Users u in user)
{
Console.WriteLine("{0}\t{1}",u.Login_Name,u.Created_Time);
}
}
私が理解から、ユーザーが列挙オブジェクトでないオブジェクトので、これは明らかに動作しません。 Users
オブジェクトとrepository contract
とrepository implementation
を変更して、Users
オブジェクトが画面に表示されるように戻すにはどうすればよいですか?
Users.cs
UserRepository.cs
IUserRepository.cs
私は質問の下部に定義 'Users.cs'が含まれています。 – Animesh