如何使用Entity Framework代码优先生成集群主键?

时间:2014-07-24 20:07:35

标签: entity-framework ef-code-first

这是我们在sql语句中的内容,省略了一些字段名称以节省一些空间:

CREATE TABLE [dbo].[Payment](
   [PaymentId] [uniqueidentifier] NOT NULL,
   [ItemId] [int] NULL,
   ...
CONSTRAINT [PK_Payment] PRIMARY KEY CLUSTERED 
(
   [PaymentId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) 
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

我可能不能只说,

HasKey(p => p.PaymentId)

在Entity Framework Code First中生成这个复杂的CONSTRAINT子句的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我无法复制您的问题。当我使用以下代码时:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<Adjustment>()
    .HasKey(a => a.Id)

生成的sql如下:

CREATE TABLE [dbo].[Adjustment](
  [Id] [uniqueidentifier] NOT NULL,
  // additional unrelated fields removed
 CONSTRAINT [PK_dbo.Adjustment] PRIMARY KEY CLUSTERED 
 (
   [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] TEXTIMAGE_ON [PRIMARY]