如果一个标志IsAdmin,作为AdminUser转换,否则转换为NormalUser。实体框架:基于列值的类型?
只是好奇这个,但不知道如何去做。我确实看到,您可以根据表中的值和另一个表创建一个子对象,如:
SiteUser从表中可以Site_User 管理用户从表中可以Site_User和Admin_User当Site_User.IsAdmin =真
然而,我很好奇你是否可以这样做:
如果IsAdmin为true,则转换为AdminUser,否则转换为NormalUser,其中AdminUser:SiteUSer和NormalUser:SiteUser但不存在Admin_User表或Normal_User表。这完全是基于相同表格和列值的投射。该类型抱任何的附加信息,只是会像的情况下会有所帮助:
SomeMethod(SiteUser someUser)
{
if(someUser is AdminUser)
{
...
}
else
{
...
}
}
相反的:
SomeMethod(SiteUser someUser)
{
if(someUser.IsAdmin)
{
...
}
else
{
...
}
}
现在我意识到这可能不是最好的例子,但表示该标志为多价值属性,而不是:
SomeMethod(SiteUser someUser)
{
swith(someUser.Role)
{
case(1):
break;
case(2)
break;
}
}
当然,这可能是一个坏主意,但想知道是否有可能。
是的,你可能是正确的第一部分,第二部分并不让我感到惊讶,因为我不是100%确定如何问。 – 2009-01-21 18:35:43