LINQ to SQL insertonsubmit()不工作(Windows窗体)
本文关键字:工作 Windows 窗体 to insertonsubmit LINQ SQL | 更新日期: 2023-09-27 18:09:20
我的c#桌面应用程序有问题。我决定将我非常简单的web窗体web应用程序迁移到windows窗体。我使用了sql和LINQ。在网页形式中,一切都很好。在windows表单中没有。代码是完全一样的。我将其更改为数据库中只有一个控件和一个表。我调试,我认为一切都很好,但从某种原因insertonsubmit()命令不工作。我将感激你的帮助。
我使用Windows 8, Visual for web 2012, for desktop 2013
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DataClasses1DataContext db = new DataClasses1DataContext();
osoba obj = new osoba();
obj.nazwa ="Anna";
db.osobas.InsertOnSubmit(obj);
db.SubmitChanges();
MessageBox.Show("ok");
}
}
附件项目:https://drive.google.com/file/d/0B7nHhrRU4CjHZExDMFRlNkZzN0U/edit?usp=sharing
将评论转换为答案
问题是,当你有DB附加在项目中,对于web应用程序,它工作得很好,因为它不会复制到bin文件夹。但是对于Win应用程序,它会在每次构建时复制它,所以在您的情况下,步骤是:
- 当你在Visual Studio中运行时,
- 它做编译,并复制汇编和DB本身到bin'Debug文件夹
- ,然后启动应用程序。所有更改都在db中从bin'Debug文件夹 中进行。
- 然后当你在Visual Studio中再次运行它时
- 它再次进行构建,并复制编译汇编和相同的旧DB存在于项目中。这一步是覆盖以前的DB从bin'Debug文件夹
- 和应用程序启动时,它没有任何变化从步骤3
这是典型的问题,当你使用DB附加到项目。通常这是可以的,但如果你不喜欢它,你可以把你的数据库从项目中移开。或者您可以使用SQL Express或通常的SQL server,并将您的数据库连接到SQL server,然后它将从您的项目中分离出来,并且不会每次都被替换。
几秒钟前我得到了同样的错误,但它是固定的。
在visual studio 2013中有一个数据库连接的解决方案。
服务器资源管理器->数据连接-> yourdatabasename应该变成绿色。
还可以检查表是否有主键