locked
求助 silverlight RIA Service 无法读取数据 RRS feed

  • 问题

  • 环境:vs2012+silverlight5+EF5

    解决方案:
    silverlight应用程序+silverlight5+riaservice

    数据库:
    创建个最简单的库[F]和表[A]
    CREATE TABLE [dbo].[A] (
        [Id] INT NOT NULL,
        PRIMARY KEY CLUSTERED ([Id] ASC)
    );
    然后随便插入几条;

    实体数据模型:
    添加->从数据库生成

    域服务:
    添加->选择上面的实体模型+允许编辑
    自动生成:
            public IQueryable<A> GetA()
            {
                return this.ObjectContext.A;
            }

            public void InsertA(A a)
            {
                if ((a.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.ChangeObjectState(a, EntityState.Added);
                }
                else
                {
                    this.ObjectContext.A.AddObject(a);
                }
            }

           UpdateA 和 DeleteA略过
           在GetA 和 InsertA内设置断点

    生成解决方案->Generated_Code下自动生成代码
        包含:
            public EntitySet<A> As
            {
                get
                {
                    return base.EntityContainer.GetEntitySet<A>();
                }
            }

            public EntityQuery<A> GetAQuery()
            {
                this.ValidateMethod("GetAQuery", null);
                return base.CreateQuery<A>("GetA", null, false, true);
            }

    修改MainPage.xaml.cs:
                public MainPage()
            {
                InitializeComponent();

                int i = context.Load(context.GetAQuery()).Entities.Count();
                int j = context.As.Count();

                A a = new A() { Id = 10 };
                context.As.Add(a);
                context.SubmitChanges();
            }

    调试: 
    i和j都等于0,并且GetA 断点未被触发;可是"context.As.Add(a)"成功,并且触发InsertA,为什么?
    2014年8月12日 2:45

答案

  • 晕这么简单的问题没人回答。。。
    原因是 Load 是异步操作,不能直接得到结果。。。
    气死我了。。。
    • 已标记为答案 CCBear 2014年8月12日 8:17
    2014年8月12日 8:17