Проблема моделирования кода EF4 CTP5 в первую очередь

#c# #entity-framework #entity-framework-4 #entity-framework-4.1 #ef-code-first

#c# #entity-framework #entity-framework-4 #entity-framework-4.1 #ef-code-first

Вопрос:

я новичок в EF4 CTP5, и я хочу создать модель ниже, например, в каждой таблице одинаковые поля (идентификатор, текст, значение), я не хочу помещать их все в одну таблицу, могу ли я использовать базовый класс? но я не знаю, как это может быть моей моделью домена?

 public class BaseSearchType
{
   public int Id {get;set;}
   public int text{get;set;}
   public int value {get;set;}
}

public class BooleanSearchTypeTable :BaseSearchType
{

}

public class JobStatusSearchTypeTable:BaseSearchType
{

}

public class PersonStatusSearchTypeTable: BaseSearchType
{

}
  

Таблицы

 BooleanSearchTypeTable 
-----------------
id text value
1   All  0
2   Yes  1
3   No   2

JobStatusSearchTypeTable
-----------------
id text value
1   Open  0
2   Closed  1
3   Approved   2
4   Rejected 3
5   Waiting 4

PersonStatusSearchTypeTable
id text value
1   Work 0
2   Seek 1
3   Vacation 2
  

Комментарии:

1. Вам следует перейти на релизную версию. Этого не было более месяца. EF 4.1

Ответ №1:

Они не будут отображены в одну таблицу, пока вы не дадите команду EF сделать это. Просто определите свои классы следующим образом:

 public abstract class BaseSearchType
{
    public int Id { get; set; }
    public string text { get; set; }
    public int value { get; set; }
}

public class BooleanSearchTypeTable : BaseSearchType
{ }

public class JobStatusSearchTypeTable : BaseSearchType
{ }

public class PersonStatusSearchTypeTable : BaseSearchType
{ }
  

И ваш контекст, подобный:

 public class Context : DbContext
{
    public DbSet<JobStatusSearchTypeTable> JobStatuses { get; set; }
    public DbSet<BooleanSearchTypeTable> BooleanStatuses { get; set; }
    public DbSet<PersonStatusSearchTypeTable> PersonStatuses { get; set; }
}
  

Комментарии:

1. не можете ли вы просто задать базовый класс, например, общедоступный DbSet<BaseSearchType> BaseSearchType{ get; set; }

2. Как только вы это сделаете, у вас будет наследование сущностей и все объекты, сопоставленные с одной таблицей, чего не хочет OP. Вы можете изменить его для наследования другого типа, но все же это то, что вы должны делать, только если вам это нужно.

Ответ №2: