2016-09-13 3 views
1

Просто интересно, можно ли добавлять аннотации данных к классу, на который ссылается библиотека классов, не имеющая ссылки на EntityFramework.Entity Framework 6 Добавить данные Аннотации по ссылочному классу

Project.Data.Entities Например библиотека

public class User { 
    public long Id { get; set; } 
    public string UserName { get; set; } 
} 

Project.Data.Repositories.EntityFramework ссылки Project.Data.Entities библиотека. Как добавить аннотации данных в отношении свойств ключа, имен столбцов, имен таблиц и т. Д.?

ответ

2

Для этой цели существуют современные API.

EDIT

Об отображении вы должны переопределить OnModelCreating

public class TestContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

     modelBuilder.Entity<User>() 
      .ToTable("user") 
      .HasKey(_ => _.Id); 

     modelBuilder.Entity<User>() 
      .Property(_ => _.Id).HasColumnName("id"); 

     modelBuilder.Entity<User>() 
      .Property(_ => _.UserName).HasColumnName("username"); // Add also HasMaxLength here 
    } 
} 

(если база данных уже существует, и это не создан EF на модели вам необходимо отключить и миграции)

EDIT

Если вы установили SQL Server с кодовой страницей CI, то имя столбца не имеет значения. Так что вам нужно только указать HasMaxLength

+0

[Table ("пользователь")] класс пользователя общественного { [Key] [Колонка ("ID")] общественность долго Id {получить; задавать; } [Столбец ("username")) public string UserName {get; задавать; } } Как я могу достичь этого, используя свободный API, зная, что мои объекты нужно только сопоставить с существующей схемой базы данных? –

+0

Хорошо, но я чувствую, что это будет излишним, чтобы настроить каждую сущность. И мы еще не говорили о внешних ключах! Аннотации данных казались намного более чистыми и лаконичными ... нет абсолютно никакого способа их использования? –

+0

Ни в коем случае с аннотацией данных (или, лучше, вы можете добавлять атрибуты таким же образом, как и для свободного API, поэтому свободный API лучше). Что касается свободного API, есть разные вещи, которые вы не можете сделать с аннотацией данных (большинство из них связаны с отношениями), поэтому иногда вам приходится их использовать. – bubi