C# 为什么不是';是否将新行添加到我的数据库表中?

C# 为什么不是';是否将新行添加到我的数据库表中?,c#,linq-to-sql,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.Selec

这是我的密码:

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布局:


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

这里有两件事可能会有所帮助,但这件事不可能给出明确的答案-你必须尝试一下。我在这里尝试的第一件事是更改EF代码的“标准”结构,它将“关闭/处置”上下文,并确保实体本身的identity属性设置正确。有时候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();
}

还有。。。你是否拼错了“Authorized”-现在就修复它,否则就太晚了,你要在整个应用程序中传播它。

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

无异常无错误-您连接到正确的数据库了吗?可能是您的开发/生产数据库与此相同structure@Habib嘿,哈比卜!我检查了我的连接字符串,我确实指向了正确的数据库。此外,用户从中选择的两个dropdownlists正在填充来自数据库中其他两个表的数据,因此我非常确定它连接到了正确的数据库。这是一个奇怪的。我想不出下一步该检查什么。是的,我刚才发现了拼写错误。我已经修复了它并重建了dbml。让我试试你的建议,看看会发生什么。不幸的是,使用指令添加
会产生相同的结果:没有插入任何内容。啊,嗯。这只是一个我用来测试东西的小程序。我可能会忘记它,尽管我讨厌不知道问题是什么。但是,从总体上看,现在这并不重要。谢谢你的帮助!在代码块退出后检查数据库?这是一个有趣的问题,但我觉得我在什么地方遗漏了一些信息。你检查了实体本身的identity属性,对吗?检查我的编辑。。。尝试改用Add()方法。让我知道这是否有效。我认为你的实体是“分离的”——看这里:你可能碰到了什么,我不确定。但是,我没有实体上的Add()方法。当我尝试使用Add而不是InsertOnSubmit时,Intellisense会抱怨。这可能是一个问题的迹象吗?