【发布时间】:2011-12-11 13:20:02
【问题描述】:
当我将数据导入具有不同 ID 的数据库时,我遇到了重新创建 ID 的问题。所有数据都正确导入,只是身份(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; }
...
}
数据库上下文只在这个带有 Ninject 的 ASP.Net MVC 3 应用程序中创建一次。
我尝试在添加新条目时使用 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]
对此的任何帮助表示赞赏:)
【问题讨论】:
标签: asp.net-mvc-3 entity-framework entity-framework-4.1