fyf

posts - 8, comments - 0, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2010年3月25日

 /// <summary>
        /// List转换成DataSet
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="list">将要转换的List</param>
        /// <returns></returns>
        public DataSet ConvertToDataSet<T>(IList<T> list)
        {
            if (list == null || list.Count <= 0)
            {
                return null;
            }

            DataSet ds = new DataSet();
            DataTable dt = new DataTable(typeof(T).Name);
            DataColumn column;
            DataRow row;

            System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);

            foreach (T t in list)
            {
                if (t == null)
                {
                    continue;
                }

                row = dt.NewRow();

                for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
                {
                    System.Reflection.PropertyInfo pi = myPropertyInfo[i];

                    string name = pi.Name;

                    if (dt.Columns[name] == null)
                    {
                        column = new DataColumn(name, pi.PropertyType);
                        dt.Columns.Add(column);
                    }

                    row[name] = pi.GetValue(t, null);
                }

                dt.Rows.Add(row);
            }

            ds.Tables.Add(dt);

            return ds;

        }

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangygang/archive/2009/09/07/4527613.aspx

posted @ 2010-03-25 10:41 fyf 阅读(60) 评论(0) 编辑

2009年7月23日

WCF的典型宿主包括以下四种:
1、"Self-Hosting" in a Managed Application(自托管宿主)
2、Managed Windows Services(Windows Services宿主)
3、Internet Information Services(IIS宿主)
4、Windows Process Activation Service(WAS宿主)

1、自托管宿主
利用WCF提供的ServiceHost<T>提供的Open()和Close()方法,可以便于开发者在控制台应用程序,Windows应用程序乃至于ASP.NET应用程序中托管服务。不管自宿主的环境是何种应用程序,实质上托管服务的方式都是一致的。例如在控制台应用程序中:
using (ServiceHost host = new ServiceHost(typeof(DocumentsExplorerService)))
{
    host.Open();

    Console.WriteLine("The Service had been launched.");
    Console.Read();
}

由于ServiceHost实例是被创建在应用程序域中,因此我们必须保证宿主进程在调用服务期间不会被关闭,因此我们利用Console.Read()来阻塞进程,以使得控制台应用程序能够一直运行,直到认为地关闭应用程序。如果是Windows应用程序,则可以将创建ServiceHost实例的代码放在主窗体的相关代码中,保证服务宿主不会被关闭。

posted @ 2009-07-23 10:06 fyf 阅读(152) 评论(0) 编辑

2009年6月4日

      SQL Server 2008 引入了更改跟踪,这是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制。通常,若要使应用程序能够查询对数据库中的数据所做的更改和访问与这些更改相关的信息,应用程序开发人员必须实现自定义更改跟踪机制。创建这些机制通常涉及多项工作,并且常常涉及使用触发器、timestamp 列和新表组合来存储跟踪信息,同时还会涉及使用自定义清除过程。使用变更跟踪数据库结构无需任何更改,也不会创建任何触发器。

下表介绍在应用程序中使用更改跟踪而不开发自定义解决方案来跟踪数据库中的更改的一些好处。

好处 说明

减少了开发时间。

由于 SQL Server 2008 中提供了更改跟踪功能,因此无需开发自定义解决方案。

不需要架构更改。

使用更改跟踪不需要执行以下任务:

  • 添加列。
  • 添加触发器。
  • 如果无法将列添加到用户表,则需要创建要在其中跟踪已删除的行或存储更改跟踪信息的端表。

内置清除机制。

更改跟踪的清除操作在后台自动执行。不需要端表中存储的数据的自定义清除。

提供更改跟踪功能的目的是获取更改信息。

使用更改跟踪功能可使信息查询和使用更方便。列跟踪记录提供与更改的数据相关的详细信息。

降低了 DML 操作的开销。

同步更改跟踪始终会有一些开销。但是,使用更改跟踪有助于使开销最小化。开销通常会低于使用其他解决方案,对于需要使用触发器的解决方案,尤其如此。

更改跟踪是基于提交的事务进行的。

更改的顺序基于事务提交时间。在存在长时间运行和重叠事务的情况下,这样可获得可靠的结果。必须专门设计使用 timestamp 值的自定义解决方案,以处理这些情况。

配置和管理更改跟踪的标准工具。

SQL Server 2008 提供标准的 DDL 语句、SQL Server Management Studio、目录视图和安全权限。

 

配置和管理更改跟踪

 

Code

 

启用表的更改跟踪后,会影响某些管理操作。下表列出了应当注意的操作和影响。

操作 启用更改跟踪后

DROP TABLE

会删除已删除表的所有更改跟踪信息。

ALTER TABLE DROP CONSTRAINT

删除 PRIMARY KEY 约束的尝试将失败。必须先禁用更改跟踪,然后才能删除 PRIMARY KEY 约束。

ALTER TABLE DROP COLUMN

如果要删除的列是主键的一部分,则不允许删除该列,而不管是否启用了更改跟踪。

如果要删除的列不是主键的一部分,则可以成功删除该列。但是,首先应了解此操作对同步此数据的任何应用程序的影响。如果为该表启用了列更改跟踪,则可能仍会将已删除的列作为更改跟踪信息的一部分返回。已删除列的处理由应用程序负责。

ALTER TABLE ADD COLUMN

如果将新列添加到启用了更改跟踪的表中,则不会跟踪该列的添加。只会跟踪对新列所做的更新和更改。

ALTER TABLE ALTER COLUMN

不会跟踪非主键列的数据类型更改。

ALTER TABLE SWITCH

如果其中一个表或两个表都启用了更改跟踪,则切换分区将失败。

DROP INDEX 或 ALTER INDEX DISABLE

不能删除或禁用强制使用主键的索引。

TRUNCATE TABLE

可以对启用了更改跟踪的表执行截断表操作。但是,不会跟踪由该操作删除的行,并且会更新最低有效版本。当应用程序检查其版本时,检查结果会表明该版本太陈旧,需要进行重新初始化。这与禁用后又重新启用表的更改跟踪的效果相同。

由于在操作过程中会存储更改跟踪信息,因此使用更改跟踪会增加 DML 操作的一些开销。

      

 更改跟踪函数

 

a.  CHANGE_TRACKING_CURRENT_VERSION

返回与上次提交的事务相关联的版本号。启用了更改跟踪的数据库具有一个版本计数器,在对启用了更改跟踪的表进行更改时,该计数器会随之递增。每个更改的行都有一个关联的版本号。可以在每次查询完成后,记录这个版本号,下次查询时,基于这个版本号查询,以获取后续的最新更改。

b.  CHANGE_TRACKING_MIN_VALID_VERSION

指定表可用的最低有效版本号。在第一次查询数据的时候,可以使用此函数得到查询更改信息的起始版本号;

c.  CHANGETABLE(CHANGES)

返回自指定版本起对表所做的所有更改的跟踪信息;

d.  CHANGETABLE(VERSION)

返回指定行的最新更改跟踪信息。(通过指定特定行对应的主键列值);

e.  CHANGE_TRACKING_IS_COLUMN_IN_MASK

通过CHANGETABLE(CHANGES …)函数返回的SYS_CHANGE_COLUMNS值及列id,确定该列是否被UPDATE

 

参考资料:http://msdn.microsoft.com/zh-cn/library/cc280462.aspx

 http://blog.csdn.net/zjcxc/archive/2009/03/10/3975644.aspx#_Toc224445830

posted @ 2009-06-04 14:47 fyf 阅读(371) 评论(0) 编辑

2009年4月23日

出现如下错误,排除网络原因。

测试wcf服务无法连接,造成改错误的原因可能是连接数过多,WCF配置文件默认为10个连接数,如果连接服务的客户端超过10个后,将访问不到服务。

 

解决方案:
1)首先保证客户端每次建立的连接在使用完成后进行关闭.即调用Close()方法,否则此连接会在设置的会话(一般为10分钟)后才自动关闭.期间任何客户端也无法使用此服务.
2)如果默认的连接数不能满足客户端的需要,可以增加连接数.配置文件如下:
<serviceThrottling maxConcurrentCalls="20" maxConcurrentSessions="20" maxConcurrentInstances="30" />
说明:maxConcurrentCalls :最大并发数,默认为16
maxConcurrentSessions :最大的会话数,主要针对于PerSession的情况,默认为10
maxConcurrentInstances:最大实例数,默认为26

 

posted @ 2009-04-23 19:02 fyf 阅读(172) 评论(0) 编辑

关于C#中timer类  在C#里关于定时器类就有3个  
      1.定义在System.Windows.Forms里  
      2.定义在System.Threading.Timer类里  
      3.定义在System.Timers.Timer类里 

      System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API  SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console  Application(控制台应用程序)无法使用。   
      System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET  Thread  Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。

例:
使用System.Timers.Timer类
System.Timers.Timer t = new System.Timers.Timer(10000);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;

Code

 

参考资料:http://www.cnblogs.com/suchenge/articles/889435.html

posted @ 2009-04-23 10:05 fyf 阅读(348) 评论(0) 编辑

2009年4月22日

posted @ 2009-04-22 16:17 fyf 阅读(276) 评论(0) 编辑

2009年4月17日

posted @ 2009-04-17 14:25 fyf 阅读(55) 评论(0) 编辑

posted @ 2009-04-17 11:28 fyf 阅读(42) 评论(0) 编辑