Windows服务之EF加载数据

参考:http://blog.csdn.net/shengxupeng/article/details/45534595

http://greatverve.cnblogs.com/archive/2011/07/18/app-config.html

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Configuration;
using System.IO;
namespace DataLoad
{
    public partial class Service1 : ServiceBase
    {
        //定时器
        System.Timers.Timer t = null;
        public Service1()
        {
            InitializeComponent();
            //启用暂停恢复  
            base.CanPauseAndContinue = true;


            //每10分钟执行一次  
            t = new System.Timers.Timer(600000);
            //设置是执行一次(false)还是一直执行(true);  
            t.AutoReset = true;
            //是否执行System.Timers.Timer.Elapsed事件;  
            t.Enabled = true;
            //到达时间的时候执行事件(theout方法);  
            t.Elapsed += new System.Timers.ElapsedEventHandler(theout);
        }


        protected override void OnStart(string[] args)
        {
            t.Start();
        }


        protected override void OnStop()
        {
            t.Stop();
        }
         //恢复服务执行  
        protected override void OnContinue(){
            t.Start();
        }
        //暂停服务执行  
        protected override void OnPause() {
            t.Stop();
        }
        public void WriteLog(string str)
        {


            using (StreamWriter sw = File.AppendText(@"d:\service.txt"))
            {
                sw.WriteLine(str);
                sw.Flush();
            }
        }
        public void theout(object source, System.Timers.ElapsedEventArgs e)
        {
            String servername = "";
            String database = "";
            String user = "";
            String password = "";
            string str = System.Reflection.Assembly.GetEntryAssembly().Location;
            str = str.Substring(0, str.LastIndexOf("\\"));
            try
            {
                //创建并初始化一个xml对象
                XmlDocument xml = new XmlDocument();
                //加载xml文件
                xml.Load(str + @"\EFConfig.xml");


                //读取节点
                foreach (XmlNode node in xml.SelectNodes("/configuration/source"))
                {


                    servername = node.SelectSingleNode("server").InnerText;
                    database = node.SelectSingleNode("database").InnerText;


                    user = node.SelectSingleNode("user").InnerText;
                    password = node.SelectSingleNode("password").InnerText;
                }


                string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SIMPEntities"].ConnectionString.ToString();
                //新建一个连接字符串实例
                string newConString =
                    "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source="
                    +servername+";initial catalog="+database+";persist security info=True;user id="+user+";password="+password+";MultipleActiveResultSets=True;App=EntityFramework"";
                ConnectionStringSettings mySettings=new ConnectionStringSettings("SIMPEntities", newConString, "System.Data.EntityClient");
                // 打开可执行的配置文件*.exe.config
                Configuration config =
                    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                //删除旧的字符串
               
                config.ConnectionStrings.ConnectionStrings.Remove("SIMPEntities");
                // 将新的连接串添加到配置文件中.
                config.ConnectionStrings.ConnectionStrings.Add(mySettings);
                // 保存对配置文件所作的更改
                config.Save(ConfigurationSaveMode.Modified);
                // 强制重新载入配置文件的ConnectionStrings配置节
                ConfigurationManager.RefreshSection("connectionStrings");
                
            }
            catch (Exception ex)
            {
                WriteLog(ex.Message);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值