Имя таблицы EF Class и столбец имеют одинаковое имя - PullRequest
0 голосов
/ 10 мая 2019

Я использую EntityFramework, и у меня есть создатель моделей, который перебирает свои сущности для их создания.Проблема в том, что одна из таблиц, из которых я хочу прочитать, называется такой же, как и один из столбцов.Это не может работать, поскольку класс имеет то же имя, что и свойство

public class Role
{
    public int RoleId{ get; set; }
    public string Role{ get; set; }
} 

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    foreach (Type entityType in GetEntityTypes())
    {
        modelBuilder.RegisterEntityType(entityType);
    }

    modelBuilder.Configurations.AddFromAssembly(GetType().Assembly);
}

1 Ответ

2 голосов
/ 10 мая 2019

Я бы не использовал таблицу и атрибут с тем же именем, что и излишним. Вы должны быть в состоянии прочитать код естественно. Вместо RoleId я бы просто использовал Id, а вместо Role я бы использовал Name. Вы уже знаете таблицу, к которой обращаетесь, потому что она обычно выставляется на модели.

Было бы более естественно получить доступ:

dbRepository.Role.Name

чем:

dbRepository.Role.Role

<ч /> В любом случае, попробуйте что-то вроде этого:

public class Role
{
    public int RoleId{ get; set; }
    public string Role{ get; set; }
} 

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<Role>().ToTable("MyCustomRoleTable");   

    foreach (Type entityType in GetEntityTypes())
    {
        modelBuilder.RegisterEntityType(entityType);
    }

    modelBuilder.Configurations.AddFromAssembly(GetType().Assembly);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...