我需要在数据库中存储大量用户数据,其中每个用户都已将ID作为密钥.但是,这些用户全部来自更大的用户池,因此,ID不会增加且无法自动生成.我需要能够手动设置ID.
是否有捷径可寻?
我做了一些测试,这似乎对EF 7.0.0 rc1-final有用:
modelBuilder.Entity().HasKey(x => x.Id); modelBuilder.Entity ().Property(x => x.Id).ValueGeneratedNever();
我的测试代码:
static void Main(string[] args) { using (var db = new FooContext()) { var myFoo = new Foo {Id = 1002, Descr = "Test"}; db.Add(myFoo); db.SaveChanges(); } using (var db = new FooContext()) { var myFoo = db.Foos.FirstOrDefault(x => x.Id == 1002); Console.WriteLine($"id = {myFoo?.Id}, descrip = {myFoo?.Descr}"); } }
(完整的程序代码:http://pastebin.com/hSs9HZCP)
它正确地插入和检索具有指定id的记录,并且该表具有指定的正确主键.
这是生成的迁移代码:
migrationBuilder.CreateTable( name: "Foo", columns: table => new { Id = table.Column(nullable: false), Descr = table.Column (nullable: true) }, constraints: table => { table.PrimaryKey("PK_Foo", x => x.Id); });