Smark.Data 1.5更新详解
2012-06-23 15:26
274 查看
由于一直忙于Beetle的开发和优化,Smark.Data组件已经有很长一段时间更新。这段时间发现Smark.Data在某些情况下不足,而这些情况又比较普遍所以进行了1.5版的更新。其更新的主要功能包括:查询可填充到自定义对象中,可直接执行存储过程和执行存储过程数据填充到对象中。
以上是一个简单的雇员信息描述。
以上操作是获取所有雇员信息,而产生的SQL如下:
但有些时候并不想获取所有信息,如只获取雇员的简单联系信息。在1.5版本前的做法重新描述一个对象,并添加相关映射属性;在1.5版里就相对简单很多只需描述信息对象,并不需要描述映射属性。
在查询的时候只需要,调用List方法的另一版本即可。
以上生成的SQL并不会获取所有字段,而是根据EmployeeContact和Employee相匹配的属性进行生成查询字段。
![](http://pic002.cnblogs.com/images/2012/254151/2012062315244679.jpg)
以上存储过程有一个输入参数和一个返回参数,那可以这样定义一个存储过程映射对象
通过一个Proc属性来描述对象是一个存储过程描述对象,如果属性不指定名称则用对象名称作为存储过程名称调用;通过PorcParameter来描述一个属性对应的存储过程参数。这样描述后就可以进行一个存储过程执行.
如果有输出类型参数,执行完成后组件会自动把输出参数值填充到对应的属性上. 当需执行存储过程返回一个对象列表的时候可以,通过以下方法调用即可:
其属性对应关系是属性名和字段一致即可,对象成员不需要添加任何属性描述。
Smark.Data最新源码可以到http://smark.codeplex.com/获取
查询可填充到自定义对象中
在使用组件的时候会针对表制定一个数据对象结构,在查询的时候进行对象填充。但很多时候我们是需要查询这个对象,但实际上并不需要获取其所有信息。很多时候查询只是获取某几个成员信息,如果在应用做不到按需查询那对数据库的性能将会在着很大的影响。所以在1.5版中添加了这一功能,以下通过简单应但要相应的功能。[Table("Employees")] public interface IEmployee { [ID] int EmployeeID { get; set; } [Column] string LastName { get; set; } [Column] string FirstName { get; set; } [Column] string Title { get; set; } [Column] string TitleOfCourtesy { get; set; } [Column] DateTime BirthDate { get; set; } [Column] DateTime HireDate { get; set; } [Column] string Address { get; set; } [Column] string City { get; set; } [Column] string Region { get; set; } [Column] string PostalCode { get; set; } [Column] string Country { get; set; } [Column] string HomePhone { get; set; } [Column] string Extension { get; set; } }
以上是一个简单的雇员信息描述。
Expression exp = new Expression(); var items = exp.List<Employee>();
以上操作是获取所有雇员信息,而产生的SQL如下:
Select (EmployeeID) as p_EmployeeID,(LastName) as p_LastName,(FirstName) as p_FirstName, (Title) as p_Title,(TitleOfCourtesy) as p_TitleOfCourtesy,(BirthDate) as p_BirthDate, (HireDate) as p_HireDate,(Address) as p_Address,(City) as p_City,(Region) as p_Region, (PostalCode) as p_PostalCode,(Country) as p_Country,(HomePhone) as p_HomePhone, (Extension) as p_Extension from Employees
但有些时候并不想获取所有信息,如只获取雇员的简单联系信息。在1.5版本前的做法重新描述一个对象,并添加相关映射属性;在1.5版里就相对简单很多只需描述信息对象,并不需要描述映射属性。
public class EmployeeContact { public string LastName { get; set; } public string FirstName { get; set; } public string Address { get; set; } public string City { get; set; } public string Region { get; set; } public string PostalCode { get; set; } public string Country { get; set; } public string HomePhone { get; set; } }
在查询的时候只需要,调用List方法的另一版本即可。
Expression exp = new Expression(); var items = exp.List<Employee, EmployeeContact>();
以上生成的SQL并不会获取所有字段,而是根据EmployeeContact和Employee相匹配的属性进行生成查询字段。
Select (LastName) as p_LastName,(FirstName) as p_FirstName,(Address) as p_Address, (City) as p_City,(Region) as p_Region,(PostalCode) as p_PostalCode,(Country) as p_Country,(HomePhone) as p_HomePhone from Employees
存储过程执行
本人并不喜欢使用存储过程,但客观事实也有不少地方有使用存储过程的习惯。所以组件也直接支持存储过程处理,更方便使用存储过程的使用者。组件对存储过程的调用也和数据表访问一样,通过对象来描述;首先需要调用这样一个存储过程![](http://pic002.cnblogs.com/images/2012/254151/2012062315244679.jpg)
以上存储过程有一个输入参数和一个返回参数,那可以这样定义一个存储过程映射对象
[Proc] public class CustOrderHist { [PorcParameter] public string CustomerID { get; set; } [PorcParameter(Direction= System.Data.ParameterDirection.ReturnValue)] public int Result { get; set; } }
通过一个Proc属性来描述对象是一个存储过程描述对象,如果属性不指定名称则用对象名称作为存储过程名称调用;通过PorcParameter来描述一个属性对应的存储过程参数。这样描述后就可以进行一个存储过程执行.
CustOrderHist p = new CustOrderHist(); p.CustomerID = "ALFKI"; DBContext.ExecProc(p);
如果有输出类型参数,执行完成后组件会自动把输出参数值填充到对应的属性上. 当需执行存储过程返回一个对象列表的时候可以,通过以下方法调用即可:
CustOrderHist p = new CustOrderHist(); p.CustomerID = "ALFKI"; var items = DBContext.ExecProcToObjects<OrderHist>(p);
其属性对应关系是属性名和字段一致即可,对象成员不需要添加任何属性描述。
Smark.Data最新源码可以到http://smark.codeplex.com/获取
相关文章推荐
- PowerBuilder DataWindow画板的更新特性详解
- jface databinding:UpdateValueStrategy(数值更新策略)类详解
- [转]DX1.5关于帖子查看数及附件下载数延迟更新的详解
- web_submit_data详解
- 【转载】纯干货,Spring-data-jpa详解,全方位介绍。
- 详解Node.js access_token的获取、存储及更新
- 深入浅出 spring-data-elasticsearch - 基本案例详解(三
- Android Studio1.5 更新到2.2.2 后 一直显示refreshing gradle project
- 如何在 Visual C# .NET 中使用 SqlDataAdapter 对象更新 SQL Server 数据库
- 纯干货,Spring-data-jpa详解,全方位介绍。
- 用SqlDataAdapter.Update(DataSet Ds)更新数据库
- 精进不休 .NET 4.0 (6) - ADO.NET Data Services 1.5 新特性
- 详解GridView自带的编辑删除更新功能
- System.Data.DataTable计算功能详解
- Notification使用详解之三:通过服务更新进度通知&在Activity中监听服务进度
- Android版本更新实例详解
- 详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!2012-6-25日更新iap恢复
- Hibernate+JDBC实现批量插入、更新及删除的方法详解
- Oracle 11g数据库详解(2015-06-13更新)
- 没有该栏目数据 可能缓存文件(data/cache/inc_catalog_base.inc)没有更新请检查是否有写入权限