30
2016
08

.Net框架搭建之2、SQL Server MEF依赖注入 MVC Repository框架_part1

MEF依赖注入简介

依赖注入对于开发人员来说,方便的就是不需要去关注具体的实现类,不需要去New实例对象,直接使用接口层就能让程序自动注入使用,当然,还有其他一些特点,比如web http同一个请求中可以设置同一个对象只实例化一次解决多个类中多次实例化对象浪费资源的问题。不多说,百度能得到更多 多的介绍,这边直接开工搭环境。

26
2016
08

[转载]在Web.config或App.config中的添加自定义配置

.Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持。最近看到一些项目中还在自定义xml文件做程序的配置,所以忍不住写一篇用系统自定义配置的随笔了。


如果你已经对自定义配置了如指掌,请忽略这篇文章。


言归正传,我们先来看一个最简单的自定义配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="simple" type="ConfigExample.Configuration.SimpleSection,ConfigExample"/>
  </configSections>
  <simple maxValue="20" minValue="1"></simple>
</configuration>

在配置文件中使用自定义配置,需要在configSections中添加一个section元素,并制定此section元素对应的类型和名字。然后再在configuration根节点下面添加此自定义配置,如上例中的simple节点。simple节点只有两个整形数的属性maxValue和minValue。

25
2016
08

.Net框架搭建之1、SQL Server EF MVC简单三层框架

.Net简单三层框架简介

简单三层框架,是.Net开发中最最基础的框架了,由 数据访问层、逻辑处理层、表示层组成。一般情况下,在项目中数据模型Model层也是单独一层,但是只是单纯的数据模型不算在业务层划分当中。 
好了,框架搭建,如果不了解,可能会觉得难以下手,了解之后,自然知道怎么做,只是其中的步骤,比起单纯的功能开发,是要繁琐不少,下面我们来一步一步搭建属于自己的框架,这里只列出重要步骤,其他未提到的细节可自行摸索。

24
2016
08

EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换

//EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls格式

24
2016
08

[转载]Expression 表达式树学习整理

整理了一下表达式树的一些东西,入门足够了


先从ConstantExpression 开始一步一步的来吧  它表示具有常量值的表达式


我们选建一个控制台应用程序

ConstantExpression _constExp = Expression.Constant("aaa",typeof(string));//一个常量
//Console.Writeline("aaa");
MethodCallExpression _methodCallexp=Expression.Call(typeof(Console).GetMethod("WriteLine",new Type[]{typeof(string)}),_constExp);
Expression<Action> consoleLambdaExp = Expression.Lambda<Action>(_methodCallexp);
consoleLambdaExp.Compile()();
 
Console.ReadLine();

下边的MethodCallExpression你也许不知道是什么回事,不要急我下边会详细讲的,这相当于

23
2016
08

cmd命令写多个打开远程桌面的bat文件方便工作

如下图:

工作中,有各种各样的测试服务器,我们要部署应用,怎么方便秒连远程桌面呢,每次都找 远程桌面->然后再输入服务器ip ?这种方法虽然也可以,终究是慢人一拍,我来告诉你怎么弄。

18
2016
08

.Net最简单的创建多线程主线程等待所有线程执行完成的例子

多线程运行,主线程等待。

        private static void Test2()
        {
            var waits = new List<EventWaitHandle>();
            for (int i = 0; i < 10; i++)
            {
                var handler = new ManualResetEvent(false);
                waits.Add(handler);
                new Thread(new ParameterizedThreadStart(Print))
                {
                    Name = "thread" + i.ToString()
                }.Start(new Tuple<int, EventWaitHandle>(i, handler));
            }
            WaitHandle.WaitAll(waits.ToArray());
            Console.WriteLine("All Completed!");
            Console.Read();
        }
        private static void Print(object param)
        {
            var p = (Tuple<int, EventWaitHandle>)param;
            Console.WriteLine(Thread.CurrentThread.Name + ": Begin!");
            if (p.Item1 == 2) Thread.Sleep(1200);
            else if (p.Item1 ==1 ) Thread.Sleep(2000);
            else Thread.Sleep(1000);
            Console.WriteLine(Thread.CurrentThread.Name + ": Print" + p.Item1);
            Console.WriteLine(Thread.CurrentThread.Name + ": End!");
            p.Item2.Set();
        }


16
2016
08

.Net扩展类的研究-提高编程效率

测试项目结构:

16
2016
08

[转载]Quartz job.xml配置的Cron表达式详解

Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成。

Cron表达式时间字段:

位置

09
2016
08

MySqlBulkLoader后数据库出现0000-00-00 00:00:00数据问题

//这是在.Net中使用MySqlBulkLoader

//为什么使用MySqlBulkLoader,因为 20多万数据,导入数据库就几秒而已,一个字:快!其他的批量插入基本都比这种方法慢。