2015-07-07 1 views
0

В настоящее время я использую идентификатор ASP с MVC 5. Я хочу удалить поле номера телефона из таблицы AspNetUsers, но когда я использую команду add-migration, это вызывает следующее ошибка.Entity Framework 6, не может использовать метод Ignore для свойства

Вы не можете использовать Игнорировать метод на собственность «PhoneNumber» о типе «Models.DbModel.User», потому что этот тип наследует от типа «Microsoft.AspNet.Identity.EntityFramework.IdentityUser`

Здесь я уже прочитал массу вопросов, но все они сказали, что вы должны игнорировать свойство в своем базовом классе, однако в этом случае у меня нет доступа к базе.

Как я могу решить эту проблему?

Обновление: Когда я использовал свободный API в методе OnModelCreating, он работал, я не хочу использовать его таким образом, поэтому я разделил класс конфигурации для каждого объекта.

Ниже мой код:

производный Entity Класс

public class User: IdentityUser 
{ 
    public ICollection<Comment> Comments { get; set; } 

} 

класс Config

public sealed class UserConfig : EntityTypeConfiguration<User> 
{ 
    public UserConfig() 
    { 
     ToTable("dbo", "Users"); 
     Ignore(x => x.PhoneNumber); 
     Ignore(x => x.PhoneNumberConfirmed); 
    } 
} 

Контекст Класс

public class WebsiteContext : IdentityDbContext 
{ 
    public WebsiteContext() 
     : base("XYZ") 
    { 
    } 

    public DbSet<Comment> Comment { get; set; } 
    //public DbSet<User> User { get; set; } 

    public static WebsiteContext Create() 
    { 
     return new WebsiteContext(); 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
     modelBuilder.Configurations.Add(new CommentConfig()); 
     modelBuilder.Configurations.Add(new UserConfig()); 
    } 
} 

ответ

0

Попробуйте [NotMapped] атрибут из System.ComponentModel.DataAnnotations.Schema Это может получить вас обойти это ограничение, оно было использовано, чтобы игнорировать перечисления в отображении, это может быть не совсем то, что вы хотите

+0

Это будет работать только на свойствах * у вас есть доступ к *. Вы не можете применить его к свойству внутреннего класса IdentityUser, например EmailAddress. Однако это помогло мне скрыть «новое» свойство из IdentityFramework, поэтому спасибо :) –

Смежные вопросы