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のから表全体を返し、許可したいですWindow Phone側で一つずつ処理しています。
私はIService側にいくつかの変更を加える必要があると思いますが、私は真剣に電話開発に慣れていないし、Linq to SQLにも慣れていないのでわかりません。あなたは帰りのタイプのようなものを作る方法について私を案内してください。ありがとうございました。
更新
私はThere was an error while trying to deserialize parameter http://tempuri.org/:LoginUserResult. Please see InnerException for more details.
私はWCF Custom Objectに記載された方法にコードを修正したが、私はそれをデシリアライズできなかったを取得し、エラーが...私は推測する問題は、WP部から来ましたどうすれば結果を逆シリアル化できますか?
私はあなたがどのタイプを理解していないアリ返す – ivowiblo
これは私が得るエラーです: 'WCFServiceWebRole1.tblUser'型から 'System.String'型への指定されたキャストは無効です。 – 1myb
InnerExceptionには何がありますか?サービス参照を更新しましたか? – gabba