如何使用 C# 代码插入标识列
How to Insert into Identity column with c# code
是的,我知道,有很多 material 关于如何打开身份插入并在之后将其关闭,这实际上是我想使用的东西。但是我的问题还有更多,这就是我开始这个问题的原因。
向标识列中插入内容的常规方法是这样的:
using (var connection = new SqlConnection("Connection String here"))
{
connection.Open();
var query = "SET IDENTITY_INSERT dbo.MyTable ON; INSERT INTO dbo.MyTable (IdentityColumn) VALUES (@identityColumnValue); SET IDENTITY_INSERT dbo.MyTable OFF;";
using (var command = new SqlCommand(query, connection)
{
command.Parameters.AddWithValue("@identityColumnValue", 3);
command.ExecuteNonQuery();
}
}
我对此有 2 个问题:
我需要使用这个 "dbo." 吗?我目前正在使用 VS 中的 localdb,但是该项目将在完成后部署到真实服务器上
主要问题:我想插入一个完整的对象,而不仅仅是标识列的值。该对象具有给定的 ID,在数据库中是 PK。它有一个字符串值,也必须插入。
我该怎么做?
我正在寻找类似的东西:
Context.Database.Add(myObject);
*Sql string with c# to turn on identity insert*
context.database.SaveChanges();
*Sql string with c# to turn off identity insert*
这是我的模型,所以你可以更好地理解问题:
public class myObject
[Key]
public int Id { get; set; }
public string Position { get; set; }
所以经过一番交谈(向@SteveTodd 大声喊叫)我设法得到了我想要的东西。
说明:我想插入我自己的主键(出于各种原因)。我确实知道您可以暂时关闭身份,但解决方案基本上是完全关闭它。
帮助我解决和理解这个问题的另一个问题:
Entering keys manually with Entity Framework
在我的例子中,它现在看起来像这样:
public class myObject
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
int TokenId { get; set; }
}
TLDR:在 [Key] 和您的字段之间添加:
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
是的,我知道,有很多 material 关于如何打开身份插入并在之后将其关闭,这实际上是我想使用的东西。但是我的问题还有更多,这就是我开始这个问题的原因。
向标识列中插入内容的常规方法是这样的:
using (var connection = new SqlConnection("Connection String here"))
{
connection.Open();
var query = "SET IDENTITY_INSERT dbo.MyTable ON; INSERT INTO dbo.MyTable (IdentityColumn) VALUES (@identityColumnValue); SET IDENTITY_INSERT dbo.MyTable OFF;";
using (var command = new SqlCommand(query, connection)
{
command.Parameters.AddWithValue("@identityColumnValue", 3);
command.ExecuteNonQuery();
}
}
我对此有 2 个问题:
我需要使用这个 "dbo." 吗?我目前正在使用 VS 中的 localdb,但是该项目将在完成后部署到真实服务器上
主要问题:我想插入一个完整的对象,而不仅仅是标识列的值。该对象具有给定的 ID,在数据库中是 PK。它有一个字符串值,也必须插入。
我该怎么做? 我正在寻找类似的东西:
Context.Database.Add(myObject);
*Sql string with c# to turn on identity insert*
context.database.SaveChanges();
*Sql string with c# to turn off identity insert*
这是我的模型,所以你可以更好地理解问题:
public class myObject
[Key]
public int Id { get; set; }
public string Position { get; set; }
所以经过一番交谈(向@SteveTodd 大声喊叫)我设法得到了我想要的东西。
说明:我想插入我自己的主键(出于各种原因)。我确实知道您可以暂时关闭身份,但解决方案基本上是完全关闭它。
帮助我解决和理解这个问题的另一个问题:
Entering keys manually with Entity Framework
在我的例子中,它现在看起来像这样:
public class myObject
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
int TokenId { get; set; }
}
TLDR:在 [Key] 和您的字段之间添加:
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]