WCFを使用してエンティティフレームワークからこれをクエリし、電話クライアント側でデータを使用したいのですが、WCF関数から複数のデータ型をクエリする方法を知っていますか?
[OperationContract]
string LoginUser(string email, string password);
IService.cs
public string LoginUser(string email, string password)
{
string query = @"SELECT VALUE tblUser FROM MyEntities.tblUsers AS tblUser WHERE tblUser.email = @email AND tblUser.password = @password";
ObjectParameter[] parameters = new ObjectParameter[2];
parameters[0] = new ObjectParameter("email", email);
parameters[1] = new ObjectParameter("password", password);
using (var context = new SteamKingEntities())
{
ObjectQuery<string> results = context.CreateQuery<string>(query, parameters);
foreach (string result in results)
{
if (result != null)
{
return result;
}
}
}
return null;
}
IService.svc.cs
public Login()
{
InitializeComponent();
_serviceClient = new Service1Client();
_serviceClient.LoginUserCompleted += new EventHandler<LoginUserCompletedEventArgs>(_serviceClient_LoginUserCompleted);
}
private void loginBtn_Click(object sender, RoutedEventArgs e)
{
_serviceClient.LoginUserAsync(txtEmail.Text, txtPassword.Password);
}
private void _serviceClient_LoginUserCompleted(object sender, LoginUserCompletedEventArgs e)
{
if (e.Error == null && e.Result != null)
{
MessageBox.Show("Welcome " + e.Result + "!");
}
else
{
MessageBox.Show(e.Error.Message + " Couldn't Login, Please try again =D");
}
}
Login.xaml.cs
Entity Frameworkからテーブル全体を返し、WindowPhone側で1つずつ処理できるようにします。
IService側にいくつかの変更を加える必要があると思いますが、電話開発に不慣れで、Linq to SQLに慣れているため、どうすればよいか真剣にわかりません。返品用のタイプのようなものの作り方を教えてください。ありがとうございました。
アップデート
私が得るエラーThere was an error while trying to deserialize parameter http://tempuri.org/:LoginUserResult. Please see InnerException for more details.
コードをWCFカスタムオブジェクトに記載されている方法に変更しましたが、逆シリアル化できませんでした...問題はWP部分にあると思いますが、結果を逆シリアル化するにはどうすればよいですか?