我喜欢NHibernate能够让一个表基于鉴别器存储多种类型。当我获取一个RegularItem时,它将返回,因为鉴别器的子类型是正确的。
SubSonic有这种能力吗?
答案 0 :(得分:1)
简短的回答是否定的,SubSonic没有内置此功能。您可以使用ExecuteTypedList<>重新创建它,但这将是很多手动工作(您可能会重写NH功能的大部分功能)。
答案 1 :(得分:1)
你的意思是,你有一个存储有不同值的表,并且依赖于你想要返回不同对象的值吗?
e.g。你有桌上的宠物
id type name
---------------------
1 dog bello
2 cat scott
3 cat tiger
你想从中得到狗和猫的物品吗? 我有类似的情况,我通过创建一个Dog类和一个Cat类来解决它,它们都继承自亚音速自动生成的pet类并实现我的IPet接口存根,并结合工厂方法,我将对象转换为新类型:
public Class Dog : Pet, IPet { }
public Class Cat : Pet, IPet { }
public Interface IPet { }
public static IPet GetAllPets()
{
List<IPet> pets = new List<IPet>();
foreach Pet pet in PetCollection.FetchAll()
{
IPet newpet;
if (pet.Type == "dog")
newpet = new Dog();
else if (pet.Type == "cat")
newpet = new Cat();
else throw new InvalidOperationException("Unknown pet type " + pet.Type);
pet.CopyTo(newpet);
newpet.MarkOld();
pets.Add(newpet);
}
}
从内存中输入,不保证编译。但理论应该清楚。