Linq to SQL没有将数据插入数据库

时间:2010-03-18 16:18:23

标签: c# sql-server linq-to-sql

我在这里有一点/奇怪的行为,我正在寻找互联网,所以我没有找到回应。

我必须承认这是我第一次使用数据库,我知道如何将它们与SQL一起使用但实际上从未使用它。

无论如何,我的应用程序插入数据时遇到问题,我刚刚创建了一个非常简单的项目来测试,但还没有解决方案。

我有一个带有Sql Server的示例数据库

Id - int(身份主键) 名称 - nchar(10)(非空)

该表名为“Person”,简单如馅饼。

我有这个:

static void Main(string[] args)
{
    var db = new ExampleDBDataContext {Log = Console.Out};

    var jesus = new Person {Name = "Jesus"};

    db.Persons.InsertOnSubmit(jesus);
    db.SubmitChanges();

    var query = from person in db.Persons select person;

    foreach (var p in query)
    {
        Console.WriteLine(p.Name);
    }
}

正如你所看到的,没有什么可以说的。

它在控制台中显示耶稣。但是如果你看到表数据,就没有数据,只是空的。我评论对象的创建和插入,而foreach不打印东西(正常,数据库中没有数据)

奇怪的是我手动在数据库中创建了一行,Id是2而没有1(linq真的在玩数据库但是没有创建行吗?)

有日志:

  

INSERT INTO [dbo] .Person

     

VALUES(@ p0)

     

SELECT CONVERT(Int,SCOPE_IDENTITY())AS [value]

     

- @ p0:输入NChar(大小= 10; Prec = 0; Scale = 0)[Jesus]

     

- 上下文:SqlProvider(Sql2005)型号:AttributedMetaModel Build:3.5.30729.4926

     

SELECT [t0]。[Id],[t0]。[名称]   FROM [dbo]。[Person] AS [t0]

     

- 上下文:SqlProvider(Sql2005)型号:AttributedMetaModel Build:3.5.30729.4926

我真的很困惑,所有博客/书籍都使用这种代码片段将元素插入数据库。

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

首先;你有没有TransactionScope跨越这个,你还没有承诺。

然而,更有利的是:这是一个数据库文件,您正在使用系统部署(而不是单独的数据库服务器)?如果是这样,每次点击“build”等,它都会将解决方案文件夹中的版本复制到构建输出(bin / debug或bin / release)。

查看构建输出副本;看看 是否已更新。