Smark.Data一直强调以最简单和高效的方式访问数据库,在这个版本中组件引入了Query<T>对象,它是一个查询值描述对象,通过它可以更方便地进行数据查询并获取结果.组件会分析T的具体类型自动选择查询方式进行操作;在应用的时候可以直接通过Query<Employee> item=3;的方式直接得到查询数据.因此对使用者来说是一种全新方便灵活的数据库操作途径.
T类型和设置值分析
组件会把T类型分为三种类型,第一种是返回值类型或string,第二种是实体类型,第三种是实体列表IList<T>.组件会根据这几种类型会初始化不同加载器.T类型会根据设置的值选择执行的路径,因此不同类型设置不同值也需要注意,如果没有匹配那会导致运行错误并提示相关错误信息.
- T是值类型或String
支持转换SQL或存储过程
- T是实体类型
支持转换值类型,SQL,条件表达式或存储过程
- T是列表类型
支持转换SQL,条件表达式或存储过程
测试应用用例
[TestMethod] public void Result_GetValue() { Query<Employee> query = 3; Console.WriteLine(query.Value.FirstName); } [TestMethod] public void Result_GetValue1() { Query<Employee> query = Employee.employeeID == 3; Console.WriteLine(query.Value.FirstName); } [TestMethod] public void Result_GetValue2() { Query<Employee> query = "employeeid=3"; Console.WriteLine(query.Value.FirstName); } [TestMethod] public void Result_GetValue3() { Query<string> query = "select firstName from employees where employeeid=3"; Console.WriteLine(query.Value); } [TestMethod] public void Result_GetValues1() { Query<List<Employee>> query = ""; foreach (Employee item in query.Value) { Console.WriteLine(item.FirstName); } } [TestMethod] public void Result_GetValues2() { //存储过程 CustOrderHist coh = new CustOrderHist(); coh.CustomerID = "ALFKI"; Query<IList<OrderHist>> query = coh; foreach (OrderHist item in query.Value) { Console.WriteLine(item.ProductName); } }
在1.8中Query<T>所担当的角色是比较重要的,它会自动分析类型和设置的值来进行相应的数据查询并返回值,从而使数据库操作变得更简和方便.不过前提是适应这种操作.