Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# L2S bindingsource是否不添加';新增';对象到datacontext?_C#_Winforms_Linq To Sql_Datacontext_Bindingsource - Fatal编程技术网

C# L2S bindingsource是否不添加';新增';对象到datacontext?

C# L2S bindingsource是否不添加';新增';对象到datacontext?,c#,winforms,linq-to-sql,datacontext,bindingsource,C#,Winforms,Linq To Sql,Datacontext,Bindingsource,我在绑定到datagridview的winform上使用Linq到Sql绑定源。在我执行AddNew和SubmitChanges之后,它似乎没有保存到数据库中 var myObject = (myObject)myBindingSource.AddNew(); myObject.ID=123; myObject.prop="test"; myDataContext.SubmitChanges(); 然后,当我检查数据库时,对象不在那里。 bindingsource没有告诉datacontext

我在绑定到datagridview的winform上使用Linq到Sql绑定源。在我执行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();

它起作用了。这似乎是双重的工作,因为我期望bindingsource来处理它。

这个问题有点老了——我忘了我自己问过它! 因此,在一年多以后的搜索中遇到同样的问题是很奇怪的。 不过我确实找到了解决办法

起初,我使用了类似这样的方法(不起作用):

myBindingSource.DataSource=myLinqToSqlDataContext.SomeTable.ToList()

当我使用:

myBindingSOurce.DataSource = myLinqToSqlDataContext.SomeTable.Take(20);
bindingsource将毫无问题地更新基础数据库的插入和删除


所以我认为确保数据源是一个IQueryable而不是一个列表是很重要的

嗯。。。。实际上,我遇到了一种情况,bindingsource最好不要立即插入提交对象。当用户在向下钻取表单中设置更多详细信息并决定他们无论如何都不想要该对象时,您可以取消该操作,而不必在datacontext中使用对象!它变得越来越奇怪了——我刚刚发现了一些以前在没有“InsertOnSubmit”的情况下工作的代码。现在不再是了。