C# Linq to SQL不将数据插入数据库
我在这里有一点/奇怪的行为,我在网上搜索,所以没有找到回应 我必须承认,这是我第一次使用数据库,我知道如何将它们与SQL结合使用,但实际上从未使用过 无论如何,我的应用程序在插入数据方面有一个问题,我只是创建了一个非常简单的项目来测试它,但还没有解决方案 我有一个Sql Server数据库示例 Id-int标识主键 名称-nchar10不为空 这张桌子叫做“人”,很简单 我有这个: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
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,这很奇怪,但这是解决方案。非常感谢。