我在使用代码优先方法在SQL Compact 4中的Id列上设置Identity Seed时遇到了一些问题.
我试过这个
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('Members',RESEED,100001");
但这在Sql Compact中不起作用.
MyDbContext:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { SetupMemberEntity(modelBuilder); } private static void SetupMemberEntity(DbModelBuilder modelBuilder) { modelBuilder.Entity<Member>().Property(m => m.Id); //.Property(m => m.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); modelBuilder.Entity<Member>().Property(m => m.FirstName).IsRequired(); modelBuilder.Entity<Member>().Property(m => m.LastName).IsRequired(); modelBuilder.Entity<Member>().Property(m => m.PinCode).IsRequired(); modelBuilder.Entity<Member>().Property(m => m.Email); //modelBuilder.Entity<Member>().Property(m => m.DateCreated).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed); //modelBuilder.Entity<Member>().Property(m => m.DateModified).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); }
我已经向成员实体添加了一个属性MemberId并尝试使用
context.Database.ExecuteSqlCommand("ALTER TABLE Members ADD MemberId INT IDENTITY(10000,1) PRIMARY KEY");
但我收到一条错误消息,表只能包含一个标识,但我没有设置任何IDENTITY,Id列自动IDENTITY?
解决方法
我找到了答案
here:
context.Database .ExecuteSqlCommand("ALTER TABLE Members ALTER COLUMN Id IDENTITY (10000,1)");