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

LINQ to SQL insertonsubmit()不工作(Windows窗体)

将评论转换为答案

问题是,当你有DB附加在项目中,对于web应用程序,它工作得很好,因为它不会复制到bin文件夹。但是对于Win应用程序,它会在每次构建时复制它,所以在您的情况下,步骤是:

  1. 当你在Visual Studio中运行时,
  2. 它做编译,并复制汇编和DB本身到bin'Debug文件夹
  3. ,然后启动应用程序。所有更改都在db中从bin'Debug文件夹
  4. 中进行。
  5. 然后当你在Visual Studio中再次运行它时
  6. 它再次进行构建,并复制编译汇编和相同的旧DB存在于项目中。这一步是覆盖以前的DB从bin'Debug文件夹
  7. 和应用程序启动时,它没有任何变化从步骤3

这是典型的问题,当你使用DB附加到项目。通常这是可以的,但如果你不喜欢它,你可以把你的数据库从项目中移开。或者您可以使用SQL Express或通常的SQL server,并将您的数据库连接到SQL server,然后它将从您的项目中分离出来,并且不会每次都被替换。

几秒钟前我得到了同样的错误,但它是固定的。

在visual studio 2013中有一个数据库连接的解决方案。

服务器资源管理器->数据连接-> yourdatabasename应该变成绿色。

还可以检查表是否有主键