如何根据类中的属性动态生成SELECT语句?

时间:2017-04-25 14:23:28

标签: c#-4.0 dynamicquery

我有一个类似下面的课程

public class MyClass
{
    public string Name { get; set; }

    public string Place { get; set; }

    public string Profession { get; set; }

    public DateTime DateOfBirth { get; set; }
}

现在基于使用上面的类初始化的对象的值,我需要动态地从SELECT语句。但我在这里面临两个挑战:

  1. 我绝对希望避免级联if - else或switch - case构造来检查对象中每个属性的值是否为null(我讨厌switch - case和if - else)
  2. 我的数据库中的属性名称和相应列可能不完全匹配
  3. 对于第二个问题,我计划进行一种映射'到XML文件,它将属性名称映射到它们对应的列,如:

    <xml>
       <mapping>
         <map property="Name" sql="NAME"/>
         <map property="Place" sql="LOCATION"/>
         <map property="Profession" sql="PROFESSION"/>
         <map property="DateOfBirth" sql="DOB"/>
       </mapping>
    </xml>
    

    如果有人有更好的想法,请告诉我。

    对于第一个挑战,我无法弄清楚如何使用现代C#方法动态生成语法正确的SELECT语句(充满空格和逗号)。我一直在研究流畅的界面,PredicateBuilderIQueryable,但不能真正做到这一点。

    有人可以帮助我找出一种方法来做到这一点,没有那些丑陋的if - elses或switch - case吗?任何和所有的帮助将不胜感激!

    谢谢!

0 个答案:

没有答案