实体框架SaveChanges()不反映实体

时间:2015-07-14 15:05:32

标签: c# sql-server datagridview entity-framework-6

我有一个Winforms项目和一个在SQL Server上运行的数据库,它有2个表,StudentStandard

首先,我使用向导帮助从数据库创建了一个ADO.NET实体数据模型。然后我有一个DataGridView控件,它有一个绑定源作为DataSource。

注意:DataBindingProjection是我创建的一个类,可以使用DataGridViewStudent实体的属性填充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()时,它不会更新数据库。

1 个答案:

答案 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; } } } 属性永远不会为空。