【问题标题】:Perform SQL Query WCF RIA Silverlight执行 SQL 查询 WCF RIA Silverlight
【发布时间】:2011-04-17 15:12:33
【问题描述】:

我创建了一个数据库,将它与我的 Silverlight 应用程序中的 DomainService 链接起来。现在我希望能够使用该服务执行某些操作,例如注册、登录等。

我怎么能做到这一点。我在服务中创建了预设方法,例如InsertUser 但它只需要一个参数,所以我不确定它是如何工作的。在元数据中,我有所有字段等。

谁能帮帮我。

谢谢。

public IQueryable<User> GetUsers()
        {
            return this.ObjectContext.Users;
        }

public void InsertUser(User user)
        {
            if ((user.EntityState != EntityState.Detached))
            {
                this.ObjectContext.ObjectStateManager.ChangeObjectState(user, EntityState.Added);
            }
            else
            {
                this.ObjectContext.Users.AddObject(user);
            }
        }

为了检索我使用过的用户(作为 TBohnen.jnr 代码的基础):

UserContext _userContext = new UserContext();

        public MainPage()
        {
            InitializeComponent();
            LoadOperation loGetUsers = _userContext.Load(_userContext.GetUsersQuery());
            loGetUsers.Completed += new EventHandler(loGetUsers_Completed);
        }

        void loGetUsers_Completed(object sender, EventArgs e)
        {
            LoadOperation<Web.User> lo = (LoadOperation<Web.User>)sender;
            var user = _userContext.Users;
            MessageBox.Show(user.ToString());
        }

【问题讨论】:

  • 请从您的域服务中添加一个示例方法,它是 IQuerable 还是 Invoke 操作?
  • 添加了生成的代码
  • 酷,给了答案,如果你需要别的东西请告诉我

标签: c# sql wcf silverlight-4.0 ria


【解决方案1】:

这是添加一个新用户:

YourDomainContext dc = new YourDomainContext();
User userToAdd = new User();
//You will have to set your properties here as I don't know them, I will give an example.
userToAdd.username = "NewUser"; 
dc.User.Add(userToAdd);
dc.SubmitChanges();

检索现有用户:

YourDomainContext dc = new YourDomainContext();
LoadOperation loGetUsers = dc.Load(dc.GetUsersQuery());
loGetUsers.Completed += new EventHandler( loadOperation_Completed );// You will see there is a callback overloads as well

and then add this as well.

private void loadOperation_Completed( object sender, EventArgs e )
{
    LoadOperation<User> lo = (LoadOperation<User>)sender;
    //Have a look at all the properties like lo.Error etc. but to see the retrieved users you can either use:
    var users = lo.AllEntities;
    //or if you declared your domaincontext as a class level parameter:
    var users = dc.User;
    foreach (Web.User user in users)
    {
        MessageBox.show(user.username);
    }
}

这将触发获取所有用户并将其添加到 DomainContext 的异步调用,您将能够通过 dc.User 访问它

【讨论】:

  • 抱歉,这不起作用,我可以获取 dc.User.Add in 但是从新用户那里没有这样的事情,我无法完成其余的代码。
  • 谢谢,现在工作了,我没有得到用户的原因是我必须使用 Web.User 因为我没有引用它。谢谢,现在我可以在我的应用程序中找到某个地方了!
  • 你能告诉我一件事,当检索我使用过的用户时,MessageBox.show(loGetUsers.toString());它只是向我展示了一些不相关的东西。我记得您必须等待服务器将数据带回应用程序。如何通过返回正确的值将其放入代码中以使其实际工作。
  • 好的,我已经扩展了加载示例,如果有帮助,您可以点个赞:-)
  • 谢谢,但它不适合我,我已经用我使用的代码更新了我的问题,也许你可以看看它是否有什么问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
相关资源
最近更新 更多