C#继承,从子类访问属性值

时间:2016-03-02 16:32:49

标签: sql inheritance

我有一个带有名称和描述属性的类别类:

public class Category
{
    public Category(){}
    public string name { get; set; }
    public string description { get; set; }
 }

我有一个子类,它有一个类别作为父类,但有一个额外的属性,即ccolor。

public partial class Car : Category
{
    public Car()
    {
    }
    public string color { get; set; }
}

现在我需要从sql查询中访问color属性:

   public IEnumerable<Category> GetCategory(string categoryName)
        {
            return db.Database.SqlQuery<Category>("SELECT * FROM " + categoryName).ToList();
        }

输出结果只有名称和描述值,但是我如何访问汽车特有的颜色或者在param中发送的表格(不要担心我的代码会避免SQL注入:))?知道我的车牌里已经有了颜色值。

或者有一种方法来转换动态对象:

Object DynamicObject = "Car" // passed in params;                                         SqlQuery<DynamicObject>("SELECT * FROM " + categoryName);

这将解决我的问题

谢谢。

2 个答案:

答案 0 :(得分:1)

您需要修改查询:

return db.Database.SqlQuery<Car>("SELECT * FROM CAR").ToList();

答案 1 :(得分:0)

当您查询CAR表时,您的输出被反序列化为Category个对象。由于Category 没有{/ 1}}字段,因此不会创建该字段。

问题也是多态性问题 - 即使您查询的表格与color匹配且您的Car是{a}},您的查询图层也不知道返回Car个对象类型为Car的对象的有效退货 - 您要求Category这就是它所创建的内容。