纠结了好久的数据查询,今天终于有点进展,虽然还没有能够做出登陆程序,但是我觉得已经非常接近了。
domain server.cs这个类,里面的成员,你会发现,里面有查询,修改,删除,更新这些功能
public IQueryable<contents> GetContents()
{
return this.ObjectContext.contents;
}
这是查询的功能,返回的是一个contents实体,如果你要修改,返回你想指定的实体,那么你要这样修改
public IQueryable<contents> GetContentsByType(string type) {
return this.ObjectContext.contents.Where(c=>c.name==type);
}
上面返回的是经过查询的实体,调用的时候,你只需要调用这么方法
插入:
public void InsertContents(contents contents)
{
if ((contents.EntityState != EntityState.Detached))
{
this.ObjectContext.ObjectStateManager.ChangeObjectState(contents, EntityState.Added);
}
else
{
this.ObjectContext.contents.AddObject(contents);
}
}
更新:
public void UpdateContents(contents currentcontents)
{
this.ObjectContext.contents.AttachAsModified(currentcontents, this.ChangeSet.GetOriginal(currentcontents));
}
删除:
public void DeleteContents(contents contents)
{
if ((contents.EntityState != EntityState.Detached))
{
this.ObjectContext.ObjectStateManager.ChangeObjectState(contents, EntityState.Deleted);
}
else
{
this.ObjectContext.contents.Attach(contents);
this.ObjectContext.contents.DeleteObject(contents);
}
}
用datagrid作例子:代码页很简单
namespace testBox
{
public partial class MainPage : UserControl
{
testBoxDomainService1 test;
public MainPage()
{
test = new testBoxDomainService1();
InitializeComponent();
binddata();
}
private void binddata() {
dataGrid2.ItemsSource = test.contents;
test.Load(test.GetContentsQuery());
}
private void chaxun_click(object sender, RoutedEventArgs e)
{
testBoxDomainService1 test2 = new testBoxDomainService1();
string s =textBox1.Text;
dataGrid1.ItemsSource = test2.contents;
test2.Load(test2.GetContentsByTypeQuery(s));
}
}
}
前台只需要把autogeneratecolumn设置为true,让其自动生成
就可以实现这样的功能: