異なるIDを持つデータベースにデータをインポートするときに、IDが再度作成される問題が発生しています。すべてのデータが正しくインポートされます。つまり、ID(ID列)はインポートされる必要があります。IDを一時的にオフにする - Entity Framework 4.1コード先頭
このモデルには2つのキーがあります。 IDとアイデンティティアイデンティティは、基本的に、他のデータソースからのユニークなインスタンス名です。したがって、これはユニークな組み合わせを作成します。
これは、すべてのクラスDbContextからであるDatabaseContext上OnModelCreatingを経由して設定されている:
modelBuilder.Entity<Observation>().HasKey(m => new {m.Instance, m.Id});
modelBuilder.Entity<Observation>().Property(m => m.Id).HasDatabaseGeneratedOption(
DatabaseGeneratedOption.Identity);
クラスは次のようになります。
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]
どれでもこれについてのヘルプは高く評価されています:)