2016-12-22 7 views
5

Entity Framework uygulamasında yeniyim. ,Entity Framework otomatik oluştur birincil anahtar

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(); 


    } 
} 

varsayalım i KullanıcıNo = 100 yeni kullanıcı eklemek istiyorum:

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; 
    } 
} 

Ve Initializer sınıfını: Basit bir sınıf var. Otomatik olarak UserId değiştirecektir. 5.

EF'in bu değişikliğini nasıl devre dışı bırakabilirim? 'UserId' birincil anahtar olmalı ve türü int.

Veri ek açıklamaları:

+2

kullanın. DatabaseGenerated (System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)] '. –

+0

@ M.Wiśnicki Teşekkürler! – HungCung

cevap

7

Sen hiç User sınıfta niteliğini değiştirmek zorunda

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

veya Akıcı API: UserId` [System.ComponentModel.DataAnnotations üzerinde

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