我在绑定到datagridview的winform上使用Linq to Sql bindingsource。在我执行AddNew和SubmitChanges后,它似乎没有保存到数据库。
var myObject = (myObject)myBindingSource.AddNew();
myObject.ID=123;
myObject.prop="test";
myDataContext.SubmitChanges();
然后当我检查数据库时,对象不在那里。 我想插入一个对象的bindingsource不会告诉datacontext吗?
如果我将代码更改为:
var myObject = (myObject)myBindingSource.AddNew();
myObject.ID=123;
myObject.prop="test";
myDataContext.MyObjects.InsertOnSubmit(myObject);
myDataContext.SubmitChanges();
它有效。这似乎是双重工作,因为我希望绑定源能够处理它。
答案 0 :(得分:0)
这个问题有点老了-我实际上忘记了我自己问过的! 因此,一年多以后在寻找同一问题时碰到它很奇怪。 我确实找到了解决方案。
起初,我使用了类似的方法(无效):
myBindingSource.DataSource = myLinqToSqlDataContext.SomeTable.ToList();
当我使用时:
myBindingSOurce.DataSource = myLinqToSqlDataContext.SomeTable.Take(20);
bindingsource将更新基础数据库以进行插入和删除操作。
所以我想确保数据源是IQueryable而不是List是很重要的。