#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:
Попробуйте использовать модель «POCO», это может помочь в этом сценарии