Отображение EF 4.1 моделей с первым кодом в таблицы базы данных - PullRequest
1 голос
/ 07 октября 2011

Я пробовал метод, основанный на модели, при разработке моего приложения.Мы обычно предпочитаем добавлять префиксы к нашим таблицам в больших базах данных, чтобы их было легче найти.Например:

  • sc_ = Таблицы корзины покупок
  • wb_ = Таблицы счетов за воду
  • ea_ = Таблицы приложений занятости

КлассУ меня есть настройки выглядит так до сих пор.

public class EFDbContext : DbContext
{
    public DbSet<Transaction> Transactions { get; set; }
    public DbSet<TransactionItem> TransactionItems { get; set; }
    public DbSet<Response> Response { get; set; }
}

Web.config (задан в настоящее время для тестирования локальной базы данных):

    <add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=database" providerName="System.Data.SqlClient"/>

Что мне нужно изменить, чтобы объект Transaction был связан с таблицей sc_Transactions?Я не видел в своем поиске, который проясняет это.

Второй вопрос: нужно ли мне вручную создавать таблицы?

Ответы [ 2 ]

3 голосов
/ 07 октября 2011

Вы можете переопределить метод OnModelCreating из DbContext в вашем EFDbContext классе:

public class EFDbContext : DbContext
{
    public DbSet<Transaction> Transactions { get; set; }
    public DbSet<TransactionItem> TransactionItems { get; set; }
    public DbSet<Response> Response { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Transaction>().MapSingleType().ToTable("someTableNameHere");
    }
}

См. этот пост для получения дополнительной информации.

1 голос
/ 07 октября 2011

Вы можете использовать System.ComponentModel.DataAnnotations примерно так:

[Table("tblUser")]
public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
}

Или с EF 4 вы можете переопределить метод OnModelCreating для отображения ваших таблиц, что является довольно мощной возможностью, поскольку вы можете отображать и настраивать много вещей одновременно.

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

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>().MapSingleType().ToTable("tblUser");
    }
}

Подробнее см .:

...