当我将数据导入到具有不同ID的数据库时,我遇到了再次创建ID的问题。所有的数据导入都是正确的,只是标识(ID列)需要导入。关闭临时身份 - 实体框架4.1代码优先
我们在这个模型中有两个键; ID和身份。身份基本上是来自其他数据源的唯一实例名称,所以这将创建一个独特的组合。
modelBuilder.Entity<Observation>().HasKey(m => new {m.Instance, m.Id});
modelBuilder.Entity<Observation>().Property(m => m.Id).HasDatabaseGeneratedOption(
DatabaseGeneratedOption.Identity);
类看起来是这样的:
这是通过在DatabaseContext的OnModelCreating这是从类的DbContext所有设置
public class Observation
{
public string Instance { get; set; }
public int Id { get; set; }
...
}
在这个ASP数据库上下文只有一次创建.Net MVC 3应用程序与Ninject。
我试图用一个SQL命令来设置标识关,同时增加了新的条目,但没有成功:
public void SetIdentiyObservation(bool isOn)
{
var state = isOn ? "ON" : "OFF";
_context.Database.SqlQuery<Observation>("SET IDENTITY_INSERT Observation @state", new SqlParameter("state", state));
}
所创建的表结构看起来像这样在MSSQL:
CREATE TABLE [dbo].[Observations](
[Instance] [nvarchar](128) NOT NULL,
[Id] [int] IDENTITY(1,1) NOT NULL,
...
PRIMARY KEY CLUSTERED
(
[Instance] ASC,
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
任何帮助对此表示赞赏:)