Entity Framework Code First CTP5 Mapping - PullRequest
       2

Entity Framework Code First CTP5 Mapping

1 голос
/ 13 декабря 2010

Я только начал внедрять EF CTP 5 в новый проект. В этом случае все мои поля базы данных названы иначе, чем мои свойства POCO из-за неясного соглашения об именах базы данных. Правильно ли я считаю, что лучший способ отобразить это - переопределить OnModelCreating и иметь такой код

    modelBuilder.Entity<Sale>().Property(s => s.ID).HasColumnName("sale_id");
    modelBuilder.Entity<Sale>().Property(s => s.ProductName).HasColumnName("product_name");
    modelBuilder.Entity<Sale>().Property(s => s.ProductPrice).HasColumnName("product_price");
    modelBuilder.Entity<Sale>().Property(s => s.SaleDate).HasColumnName("sale_date");

Это очень быстро закончится, действительно ли это лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

Я думаю, вам следует рассмотреть возможность использования нового атрибута CTP5 Column .В этом случае использование аннотаций данных представляется лучшим выбором, чем свободный API.Ваш класс продажи будет выглядеть следующим образом:

public class Sale
{
    [Column(Name="sale_id")]
    public int ID { get; set; }

    [Column(Name="product_name")]
    public string ProductName { get; set; }

    [Column(Name="product_price")]
    public string ProductPrice { get; set; }

    [Column(Name="sale_date")]
    public DateTime SaleDate { get; set; }
}
1 голос
/ 05 января 2011

Спасибо за ответы

В итоге я придерживался своего первоначального подхода, поскольку хотел отделить сущности от слоя данных.

Однако, чтобы сделать его более управляемым, я сделал контекст частичным классом и создал файл для каждой сущности с закрытым методом, таким как MapUsers или MapRoles, а затем в OnModelCreating я только что вызвал эти методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...