Windows服务之EF加载数据
2015-05-21 13:30
399 查看
参考: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);
}
}
}
}
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);
}
}
}
}
相关文章推荐
- EF的三种数据加载方式
- WINDOWS操作驱动学习 带服务加载驱动
- BenchmarkSQL用于windows上的压测加载数据时出现错误:找不到或无法加载主类LoadData
- windows下 WSO2 Application Server配置 及 MySQL数据服务部署
- 实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)
- ssh 启动服务时加载数据
- windows服务期间rsync服务端与客户端的数据同步
- windows 服务安装失败?? 未能加载此程序集或它的某一个依赖项
- Flex数据服务——延时加载研究报告
- WINDOWS下更改MYSQL数据路径(datadir)后服务启动1067解决不能改变mysql数据库存储位置
- samba服务:Linux与windows之间的数据共享
- windows下tensorflow两种加载模型的测试数据方法
- 仿Windows制作TreeView数据加载
- WINDOWS下更改MYSQL数据路径(datadir)后服务启动1067解决不能改变mysql数据库存储位置
- C#创建windows服务:提示未能加载程序集,指定的路径找不到
- vs2010打开“基于服务的数据库”加载数据表时出现错误
- 完成了WF工作流持久化和对持久化介质数据的加载, 但是仅仅用持久化,不能够保存工作流当前的执行状态,需要跟踪服务支持,怎样使用Tracing 服务呢?
- 十年一遇的奇葩故障--Windows网络编程接口故障:telnet显示无法加载或初始化请求的服务提供程序
- Windows Workflow Foundation:向跟踪服务(TrackingService)传递数据
- EF 数据延迟加载