2016-12-22 183 views
5

我新的实体框架。我有一个简单的类:实体框架自动生成主键

public class User 
{ 
    [System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 
    public string Email { get; set; } 
    public string UserName { get; set; } 
    public string Password { get; set; } 

    //public UserList Users { get; set; } 

    public User() { } 
    public User(int userId, string email, string username) 
    { 
     UserId = userId; 
     Email = email; 
     UserName = username; 
    } 
} 

我的初始化器类:

public class UserDataInitializer : DropCreateDatabaseAlways<UserDataContext> 
{ 
    protected override void Seed(UserDataContext context) 
    { 
     var Users = new List<User> { 

      new User() {UserId=1, Email="[email protected]", UserName="a1", Password="123456"}, 
      new User() {UserId=2, Email="[email protected]", UserName="a2", Password="123456"}, 
      new User() {UserId=3, Email="[email protected]", UserName="a3", Password="123456"}, 
      new User() {UserId=4, Email="[email protected]", UserName="a4", Password="123456"}} 


     Users.ForEach(i => context.Users.Add(i)); 
     context.SaveChanges(); 


    } 
} 

想,我要添加新的用户用户id = 100。它会自动更改用户ID为5

我如何可以禁用EF的这种修改?“用户ID”必须是主键,它的类型是int。

+2

使用。 DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]'。 –

+0

@M.Wiśnicki谢谢! – HungCung

回答

7

你必须User类更改属性:

数据注释:

[System.ComponentModel.DataAnnotations.DatabaseGenerat‌​ed(System.ComponentM‌​odel.DataAnnotations‌​.DatabaseGeneratedOp‌​tion.None)] 
public int UserId { get; set; } 

或流利的API:在UserId` [System.ComponentModel.DataAnnotations

modelBuilder.Entity<User>().Property(m => m.UserId) 
     .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);