Спасибо за ввод, рассмотрим некоторые предложения ...
Идея, лежащая в основе сущности учетной записи, заключалась в том, что на данный момент сайту необходимо обрабатывать только сотрудников, но в будущем они могут захотеть добавить транспортные средства и т. Д. В систему, система используется для назначения затрат организации, поэтому для этой цели с работником обращаются так же, как с транспортным средством.
Идея состоит в том, что работнику и транспортному средству нужно обращаться с ними одинаково для ссылок в БД и т. Д., Но им потребуется немного другая информация о них. Это сложный дизайн только потому, что они хотят добавить дополнительные типы позже, но без необходимости обновлять БД ...
Однако в моем коде я хочу поговорить о сотруднике, а не об универсальном типе сущности (сделать контроллер, представление и т. Д. Намного проще в приложении mvc). Поскольку вы не можете предоставить пользовательское преобразование из базового в производный класс, я пропустил его наследование и вместо него использовал следующее решение. Немного более громоздко, но работает ... Дайте мне знать, если кто-нибудь сможет найти лучший способ сделать это.
public class cAccountEmployee
{
private cAccountEntity entity;
public int id
{
get
{
return this.entity.id;
}
set
{
this.entity.id = value;
}
}
public string name
{
get
{
return this.entity.name;
}
set
{
this.entity.name = value;
}
}
public int accountholder_id
{
get
{
return this.entity.accountholder_id;
}
set
{
this.entity.accountholder_id = value;
}
}
public System.Data.Linq.EntitySet<cAccountEntityValue> cAccountEntityValues
{
get
{
return this.entity.cAccountEntityValues;
}
}
public cAccountHolder cAccountHolder
{
get
{
return this.entity.cAccountHolder;
}
}
public cAccountEmployee()
{
this.entity = new cAccountEntity();
}
public cAccountEmployee(cAccountEntity entity)
{
this.entity = entity;
}
public string id_number
{
get
{
try
{
return this.entity.cAccountEntityValues.Single(e => e.type == 1).value;
}
catch (Exception)
{
return "";
}
}
set
{
try
{
this.entity.cAccountEntityValues.Single(e => e.type == 1).value = value;
}
catch (Exception)
{
this.entity.cAccountEntityValues.Add(new cAccountEntityValue()
{
accountentity_id = this.id,
cAccountEntity = this.entity,
type = 1,
value = value
});
}
}
}
}
//In the repository
public cAccountEmployee Single(int id)
{
return new cAccountEmployee(db.cAccountEntities.Single(a => a.id == id));
}