2011-08-22 2 views
0

Я хотел бы упомянуть, что я новичок в EF.EF 4.1 Code First POCOs Library

Я создаю библиотеку доступа к данным с EF 4.1.

Для каждого объекта у меня есть две таблицы для цели перевода.

ex: События ==> Event_ar для арабского и event_en для английского.

Первая проблема: У меня есть ошибки, если я пишу два DbSets одного типа Entity

поэтому я сделал эту работу, вокруг которой абсолютно не приятно:

public class Event_en : Event { } 
public class Event_ar : Event { } 

public class DB : DbContext 
{ 
    public DbSet<Event_ar> Events_ar { get; set; } 
    public DbSet<Event_en> Events_en { get; set; } 
} 

Я хотел бы знать, если для этого есть решение?

Второй Объект должен совпадать с именем таблицы, иначе у меня есть ошибка.

Ex: «dbo.Event_ar» должен иметь POCO «Event_ar»

Это должно быть имя свойства, которое имеет такое же имя таблицы.

здесь: dbo.Events_ar ==> ПОКО "Events_ar"

Почему я не могу манипулировать именами? Любое решение?

ответ

1

Я не уверен, что ваше решение идет в правильном направлении. Не имеет смысла иметь таблицу для каждого языка - вы можете просто добавить еще один столбец в таблицу событий, которая указывает, что такое язык?

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

О таблицах и именах сущностей POCO можно переопределить таблицу, на которую сущность сопоставляется либо с использованием атрибута System.ComponentModel.TableAttribute в классе elvel, но для поддержания POCO-ness я предпочитаю использовать классы EntityTypeConfiguration и укажите имя таблицы.

, например:

public class CurrencyConfiguration : EntityTypeConfiguration<Currency> 
    { 
     public CurrencyConfiguration() 
     { 
      this.ToTable("Conv", "Ref");   
     } 
    } 

Затем добавить его к модели строитель в методе OnModelCreating коррекции на DbContext.

public class MyContext : DbContext 
{ 
    public DbSet<Currency> Currencies { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Configurations.Add(new CurrencyConfiguration());   
    } 
} 
Смежные вопросы