LINQ to SQL insertonsubmit()不起作用(Windows窗体)

时间:2014-06-18 10:12:13

标签: c# winforms linq-to-sql

我在c#中的桌面应用程序有问题。我决定将Web表单中非常简单的Web应用程序迁移到Windows窗体。我用过sql和LINQ。在网络表单中一切正常。现在在Windows窗体中没有。代码完全一样。我将其更改为数据库中的一个控件和一个表。我debbuged,我认为一切都很好,但由于某种原因insertonsubmit()命令不起作用。我将不胜感激。

我使用Windows 8,Visual for web 2012,用于桌面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

2 个答案:

答案 0 :(得分:0)

将评论转换为答案。

问题在于,当您在项目中附加了数据库时,对于Web应用程序,它可以正常工作,因为它不会将其复制到bin文件夹。但是对于Win应用程序,它会在每个构建版本上复制它,因此在您的情况下,步骤是:

  1. 从Visual Studio运行时,
  2. 它构建并将编译的程序集和DB本身复制到bin \ Debug文件夹
  3. 然后它开始你的申请。所有更改都在bin中从bin \ Debug文件夹
  4. 进行
  5. 然后再从Visual Studio
  6. 运行它
  7. 它再次构建,并复制编译的汇编和项目中存在的相同的旧DB。此步骤将覆盖bin \ Debug文件夹
  8. 中的先前数据库
  9. 当应用程序启动时,它没有从第3步开始的任何更改
  10. 当您使用附加到项目的数据库时,这是典型的问题。通常没关系,但如果您不喜欢它,可以将数据库从项目中移开。或者您可以使用SQL Express或通常的SQL服务器并将您的数据库附加到SQL Server,然后它将与您的项目分离,并且不会每次都替换。

答案 1 :(得分:0)

几秒钟前我得到了同样的错误,但它已修复。

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

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

您还可以检查表格是否包含主键。

我希望它有所帮助。