當我將數據導入到具有不同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]
任何幫助對此表示讚賞:)