Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq to SQL不将数据插入数据库_C#_Sql Server_Linq To Sql - Fatal编程技术网

C# Linq to SQL不将数据插入数据库

C# Linq to SQL不将数据插入数据库,c#,sql-server,linq-to-sql,C#,Sql Server,Linq To Sql,我在这里有一点/奇怪的行为,我在网上搜索,所以没有找到回应 我必须承认,这是我第一次使用数据库,我知道如何将它们与SQL结合使用,但实际上从未使用过 无论如何,我的应用程序在插入数据方面有一个问题,我只是创建了一个非常简单的项目来测试它,但还没有解决方案 我有一个Sql Server数据库示例 Id-int标识主键 名称-nchar10不为空 这张桌子叫做“人”,很简单 我有这个: static void Main(string[] args) { var db = new Exampl

我在这里有一点/奇怪的行为,我在网上搜索,所以没有找到回应

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

无论如何,我的应用程序在插入数据方面有一个问题,我只是创建了一个非常简单的项目来测试它,但还没有解决方案

我有一个Sql Server数据库示例

Id-int标识主键 名称-nchar10不为空

这张桌子叫做“人”,很简单

我有这个:

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,no 1是linq真正在玩数据库,但它没有创建行

下面是日志:

插入到[dbo].Person中

值@p0

选择CONVERTInt,SCOPE_IDENTITY作为[value]

-@p0:输入NChar大小=10;Prec=0;比例=0[耶稣]

-上下文:SqlProviderSql2005模型:AttributedMetaModel构建:3.5.30729.4926

选择[t0].[Id],[t0].[Name] 来自[dbo].[Person]作为[t0]

-上下文:SqlProviderSql2005模型:AttributedMetaModel构建:3.5.30729.4926

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

谢谢你的帮助。

首先;您是否有一个跨此的TransactionScope,您尚未提交

然而,更可能的是:这是一个与系统一起部署的数据库文件,而不是一个单独的数据库服务器吗?如果是这样,每次点击build etc时,它都会将解决方案文件夹中的版本复制到build输出bin/debug或bin/release中

查看构建输出副本;看看是否已经更新了;您是否有一个跨此的TransactionScope,您尚未提交

然而,更可能的是:这是一个与系统一起部署的数据库文件,而不是一个单独的数据库服务器吗?如果是这样,每次点击build etc时,它都会将解决方案文件夹中的版本复制到build输出bin/debug或bin/release中


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

WAG-您有两个数据库实例,一个是L2S正在与之交互的实例,另一个是您正在中手动创建数据库行的实例。您是否打开了事务?当您在设计器中查看Person类时,标识列是否显示为自动生成的值?@Gregoire-linqtosql会在事务中自动包装它的所有更改。但是,如果插入失败,它应该抛出异常。@tvanfosson:据我所知,如果手动设置事务,会发生什么情况,它会覆盖linq one吗?WAG-您有两个数据库实例,一个是L2S正在交互的,您正在其中手动创建数据库行。您是否打开了事务?当您在设计器中查看Person类时,identity列是否显示为自动生成的值?@Gregoire-LINQ to SQL自动包装事务中的所有更改。但是,如果插入失败,它应该抛出异常。@tvanfosson:据我所知,如果您手动设置事务,会发生什么情况,它会覆盖linq事务吗?如果您使用的是SQLExpress用户实例数据库,这种情况尤其可能发生。您就是其中之一。正如我所说,我在课程中练习过oracle和mysql,但我对Sql Server提供的所有选项都感到困惑,包括mdf、sdf和服务器内部的一个选项。我想,我使用Sql Server CE是因为我需要一些支持LINQ的嵌入式数据库。我认为我必须打开并使用垃圾桶中的lib,这很奇怪,但这是解决方案。谢谢。如果您使用的是SQLExpress用户实例数据库,那么这种情况尤其可能发生。您就是其中之一。正如我所说,我在课程中练习过oracle和mysql,但我对Sql Server提供的所有选项都感到困惑,包括mdf、sdf和服务器内部的一个选项。我想,我使用Sql Server CE是因为我需要一些支持LINQ的嵌入式数据库。我认为我必须打开并使用垃圾桶中的lib,这很奇怪,但这是解决方案。非常感谢。