【问题标题】:Does a L2S bindingsource not add the 'addnew' object to the datacontext?L2S 绑定源是否不会将“addnew”对象添加到数据上下文中?
【发布时间】:2014-02-17 13:13:02
【问题描述】:

我在绑定到 datagridview 的 winform 上使用 Linq to Sql 绑定源。在我执行 AddNew 和 SubmitChanges 后,它似乎没有保存到数据库中。

var myObject = (myObject)myBindingSource.AddNew();
myObject.ID=123;
myObject.prop="test";
myDataContext.SubmitChanges();

然后当我检查数据库时,对象不存在。 绑定源没有告诉数据上下文我要插入一个对象吗?

如果我将代码更改为:

var myObject = (myObject)myBindingSource.AddNew();
myObject.ID=123;
myObject.prop="test";
myDataContext.MyObjects.InsertOnSubmit(myObject);
myDataContext.SubmitChanges();

它有效。这似乎是双重工作,因为我希望绑定源来处理它。

【问题讨论】:

  • mmm....我实际上只是遇到了这样一种情况,即绑定源最好不要立即插入提交对象。当用户在向下钻取表单中设置更多详细信息并决定他们无论如何都不想要该对象时,您可以取消并且您不会被数据上下文中的对象卡住!
  • 它变得越来越陌生 - 我刚刚发现了一些过去没有“InsertOnSubmit”的代码。现在没有了。

标签: c# winforms linq-to-sql datacontext bindingsource


【解决方案1】:

这个问题有点老了——我真的忘记了我自己问过这个问题! 所以一年多后在搜索同一个问题时遇到它是很奇怪的。 不过我确实找到了解决方案。

起初,我使用了这样的东西(不起作用):

myBindingSource.DataSource = myLinqToSqlDataContext.SomeTable.ToList();

当我使用时:

myBindingSOurce.DataSource = myLinqToSqlDataContext.SomeTable.Take(20);

绑定源将更新基础数据库以进行插入和删除,而不会出现问题。

所以我认为确保数据源是 IQueryable 而不是 List 很重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2011-10-25
    • 1970-01-01
    • 2023-01-27
    • 2013-01-30
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多