企业门户网站建设与发展,网站开发心得500字,wordpress对接易支付宝,网络营销促销方案由于一直忙于Beetle的开发和优化#xff0c;Smark.Data组件已经有很长一段时间更新。这段时间发现Smark.Data在某些情况下不足#xff0c;而这些情况又比较普遍所以进行了1.5版的更新。其更新的主要功能包括:查询可填充到自定义对象中#xff0c;可直接执行存储过程和执行存… 由于一直忙于Beetle的开发和优化Smark.Data组件已经有很长一段时间更新。这段时间发现Smark.Data在某些情况下不足而这些情况又比较普遍所以进行了1.5版的更新。其更新的主要功能包括:查询可填充到自定义对象中可直接执行存储过程和执行存储过程数据填充到对象中。 查询可填充到自定义对象中 在使用组件的时候会针对表制定一个数据对象结构在查询的时候进行对象填充。但很多时候我们是需要查询这个对象但实际上并不需要获取其所有信息。很多时候查询只是获取某几个成员信息如果在应用做不到按需查询那对数据库的性能将会在着很大的影响。所以在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.ListEmployee(); 以上操作是获取所有雇员信息而产生的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.ListEmployee, 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 存储过程执行 本人并不喜欢使用存储过程但客观事实也有不少地方有使用存储过程的习惯。所以组件也直接支持存储过程处理更方便使用存储过程的使用者。组件对存储过程的调用也和数据表访问一样通过对象来描述首先需要调用这样一个存储过程 以上存储过程有一个输入参数和一个返回参数那可以这样定义一个存储过程映射对象 [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.ExecProcToObjectsOrderHist(p); 其属性对应关系是属性名和字段一致即可对象成员不需要添加任何属性描述。 Smark.Data最新源码可以到http://smark.codeplex.com/获取