所以我有一个名为Contact的EF4类,它有基本字段,如ID,Name,Surname等。
现在我想创建另外两个名为SelectedUser和LoggedUser的类,它们基本上继承自Contact类,但是它们还有其他方法。
所以我创建了一个名为SelectedContact的类,如下所示: -
public partial class SelectedContact : Contact
{
methods..........
}
我有一个问题,例如我想要检索一个SelectedContact。基本上我正在做的是
Contact contact = db.Contacts.FirstOrDefault(u => u.id_contact == contactId);
SelectedContact selContact = (SelectedContact)contact;
这不起作用,告诉我无法从Contact转换为SelectedContact。
我也试过
Contact contact = db.Contacts.FirstOrDefault(u => u.id_contact == contactId);
SelectedContact selContact = contact as SelectedContact;
但这会返回一个null selContact。
我知道我可以逐个移动字段,即: -
SelectedContact selContact = new SelectedContact();
selContact.id_contact = contact.id_contact;
但是我确信有更好的方法可以做到这一点。
非常感谢任何帮助!
非常感谢你的帮助和时间。
答案 0 :(得分:1)
您无法将从数据库检索到的实例强制转换为SelectedContact
,因为它不是SelectedContact
。只有Contact
并且在没有创建新实例的情况下无法进行强制转换(您必须覆盖强制转换运算符)。
原因是您的Entity模型不包含派生类,因此每次查询数据库时,您只获得Contact
个实例。为了支持您的场景,您还必须映射派生类,但它有多个缺点。例如,您无法更改联系人的类型。