为什么新行没有添加到我的数据库表中?

时间:2014-06-13 17:30:18

标签: c# linq-to-sql

这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    var dbContext = new DataClasses1DataContext();
    var record = new AutorizedActivity();
    record.MbrId = (int) ddlMember.SelectedValue;
    record.ActId = (int) ddlActivity.SelectedValue;

    dbContext.AutorizedActivities.InsertOnSubmit(record);
    dbContext.SubmitChanges();
}

基本上,表单有两个下拉列表。用户从每个列表中进行选择,然后按下按钮以更新表格及其选择。

问题是,没有数据被添加到表中。根本没有错误发生。我已经在调试中介入,并且看不出任何错误。是否有任何常见的事情我可以检查以确定程序出现插入记录的原因,但实际上没有插入任何内容?

这是我的表定义:

CREATE TABLE [dbo].[AutorizedActivities] (
[Id]    INT IDENTITY (1, 1) NOT NULL,
[MbrId] INT NOT NULL,
[ActId] INT NOT NULL,
CONSTRAINT [PK_AutorizedActivities] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_AutorizedActivities_AvailableActivities] FOREIGN KEY ([ActId]) REFERENCES [dbo].[AvailableActivities] ([Id]),
CONSTRAINT [FK_AutorizedActivities_Members] FOREIGN KEY ([MbrId]) REFERENCES [dbo].[Members] ([Id]));

为清晰起见,这是datacontext布局: enter image description here

解决方案:数据库表 正在更新......而不是我正在查看的那个。我在调试模式下运行程序,它将.mdf的副本放在debug / bin目录中。我没看那张桌子;我正在查看生产目录中的表格。如果我在发布模式下运行该程序,它将像魅力一样工作并更新 live 表,而不是 test (调试)版本。

2 个答案:

答案 0 :(得分:0)

这里有两件事情可能会有所帮助,但要对这一点作出明确答复是不可能的 - 你必须要尝试一下。我在这里尝试的第一件事就是改用标准' EF代码的结构,它将"关闭/处理"上下文,并确保在Entity本身上正确设置了您的标识属性。有时VS并不会自动执行此操作。因此,检查该设置并将代码更改为此...

using (var dbContext = new DataClasses1DataContext()) {
    var record = new AutorizedActivity();
    record.MbrId = (int) ddlMember.SelectedValue;
    record.ActId = (int) ddlActivity.SelectedValue;

    dbContext.AutorizedActivities.Add(record);
    dbContext.SubmitChanges();
}

另外......你拼错了吗?#34;授权" - 现在解决这个问题已经太晚了,你通过整个应用程序传播它。

答案 1 :(得分:0)

数据库表 正在更新......而不是我正在查看的那个。我在调试模式下运行程序,它将.mdf的副本放在debug / bin目录中。我没看那张桌子;我正在查看生产目录中的表格。如果我在发布模式下运行该程序,它将像魅力一样工作并更新 live 表,而不是 test (调试)版本。