我有一个Winforms项目和一个在SQL Server上运行的数据库,它有2个表,Student
和Standard
。
首先,我使用向导帮助从数据库创建了一个ADO.NET实体数据模型。然后我有一个DataGridView
控件,它有一个绑定源作为DataSource。
注意:DataBindingProjection
是我创建的一个类,可以使用DataGridView
和Student
实体的属性填充Standard
我有这段代码:
var query = context.Students
.Include(s => s.Standard)
.Select(s => new DataBindingProjection
{
StudentID = s.StudentID,
StudentName = s.StudentName,
DateOfBirth = s.DateOfBirth,
Height = s.Height,
Weight = s.Weight,
StandardName = s.Standard.StandardName,
Standard_StandardId = s.Standard.StandardId
}).ToList();
myList = new BindingList<DataBindingProjection>(query.ToList());
dataBindingProjectionBindingSource.DataSource = myList;
dataBindingProjectionDataGridView.DataSource = dataBindingProjectionBindingSource;
然后填充网格,当我调用context.SaveChanges()
时,它不会更新数据库。
答案 0 :(得分:0)
在spaceInfoModel.findByIdAndUpdate(spaceId, {$pull: {subers: {_id: userId}}}).exec().then(function(spaceInfo) {
...
}).then(null, function(err) { ... });
上使用Select
方法将数据投影到非实体类将破坏原始数据的链接。在您的情况下,您应该直接绑定到DbSet
类。
要绑定到Student
类中的属性,可以通过向其添加属性来扩展Standard
,因为它是一个部分类。
Student
假设partial class Student {
public StandardName {
get { return this.Standard.StandardName; }
set { this.Standard.StandardName = value; }
}
}
属性永远不会为空。