环境: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,为什么?