2

receiving the error:

The EntitySet 'User' is not defined in the EntityContainer 'festDBEntities'. Near simple identifier, line 1, column 46.

my app code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using FestCloud.festDBService;

namespace FestCloud
{
    public partial class MainPage : PhoneApplicationPage
    {
        private Service1Client _serviceClient;

        // Constructor
        public MainPage()
        {
            InitializeComponent();
            _serviceClient = new Service1Client();
            _serviceClient.LoginUserCompleted += new EventHandler<LoginUserCompletedEventArgs>(_serviceClient_LoginUserCompleted);
        }

        void _serviceClient_LoginUserCompleted(object sender, LoginUserCompletedEventArgs e)
        {
            if ((e.Error == null) && (e.Result != null))
            {
                MessageBox.Show("Welcome " + e.Result + " !");
            }
            else
            {
                MessageBox.Show("Could not log in. Please check user name/password and try again.");
            }
        }

        private void logInButton_Click(object sender, RoutedEventArgs e)
        {
            _serviceClient.LoginUserAsync(userNameTextBox.Text, passwordTextBox.Text);
        }

        private void newAccountButton_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new Uri("/Register.xaml", UriKind.Relative));
        }
    }
}

and my service code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Data.Objects;

namespace CloudServiceRole
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
    public class Service1 : IService1
    {
        public void AddUser(string userName, string password)
        {
            using (var context = new festDBEntities())
            {
                context.AddToUsers(new User()
                {
                    UserName = userName,
                    Password = password,

                });
                context.SaveChanges();
            }
        }

        public string LoginUser(string username, string password)
        {
            string query = @"SELECT value User.UserName FROM festDBEntities.User AS User WHERE User.UserName = @username AND User.Password = @password";

            ObjectParameter[] parameters = new ObjectParameter[2];

            parameters[0] = new ObjectParameter("username", username);
            parameters[1] = new ObjectParameter("password", password);

            using (var context = new festDBEntities())
            {
                ObjectQuery<string> results = context.CreateQuery<string>(query, parameters);

                foreach (string result in results)
                {
                    if (result != null)
                    {
                        return result;
                    }
                }
            }
            return null; ;
        }
    }
}

my IService.cs file:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace CloudServiceRole
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        void AddUser(string userName, string password);

        [OperationContract]
        string LoginUser(string userName, string password);
        // TODO: Add your service operations here
    } 
}

My DB contains UserId(int)-PK, UserName(nvarchar), Password(nvarchar) with others to be added after I get basics working. any ideas on whats causing the error or my code in general? Many thanks,MH

4

2 に答える 2

0

これは、EntityFrameworkの問題のようです。最も可能性の高い原因は、festDBEntitiesクラスにUserという名前のプロパティが含まれていないことです(おそらくUsersという名前ですか?)。最初にオブジェクトモデルを確認してください。私の経験から、オブジェクトクエリの代わりにLINQクエリを作成することもできます。LINQクエリは強く型付けされており、コンパイル時にこのようなエラーを取り除くのに役立ちます。

さらに、エンティティフレームワークをタグに追加して、より多くのエンティティフレームワークの専門家がこのスレッドに参加してさらに提案を提供できるようにしてください。

よろしくお願いします、

明徐。

于 2012-04-20T07:50:30.687 に答える
0

発信元の電話に問題があるようには思えませんが、別の場所から発信してみましたか? パラメーターなしで Web サービスを呼び出して、それが機能するかどうかを確認しましたか?

開始するには、このサンプルを確認することをお勧めします。

http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/hosting-wcf-service-in-windows-azure-and-using-in-window-7-phone-app/

また、次のような WCF REST と JSON を返すことをお勧めします。

http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/how-to-consume-wcf-rest-service-returning-json-in-windows-ph/

于 2012-04-19T18:09:21.307 に答える