zoukankan      html  css  js  c++  java
  • Apworks框架实战(二):开始使用

     

    Apworks框架实战(二):开始使用

    要使用Apworks进行应用程序开发,您需要安装Visual Studio 2012以上的版本(以下简称Visual Studio 2012+),从Apworks 2.5开始,需要Micrsoft.NET Framework 4.5的支持,因此强烈建议使用Visual Studio 2012+进行开发。

    获取源代码

    要获得最新版本的代码,请使用下面的命令获取:

    git clone https://github.com/daxnet/Apworks

    您也可以直接打开Apworks的首页以在线浏览源代码,或者获取Apworks的最新信息。Apworks的首页地址为:http://www.github.com/daxnet/Apworks

    注意:对于2.5.4563.21309之前的版本,可以到http://apworks.codeplex.com下载对应版本的源代码,但这部分代码已经过时,因此不建议使用。

    从源代码编译

    开发人员可以在下载完最新版本的代码后,直接使用Visual Studio 2012+打开解决方案文件Apworks.sln,然后使用Visual Studio进行编译,也可以使用代码库中自带的编译命令,从命令行进行编译。

    使用Visual Studio 2012+编译源代码

    在使用Visual Studio编译Apworks的源代码之前,请先确保Visual Studio已经安装了NuGet Package Manager,并在选项窗口中打开了Package Restore的选项。这是因为,为了减小代码库的大小,在提交Apworks代码的时候,并没有将其所需的第三方程序集全部签入到代码库中,而是借用了NuGet Package Manager的Package Restore功能。使用NuGet来管理Apworks的程序集引用的另一个好处是,使得今后Apworks类库包的发布变得非常简单。

    因此,请确保下图所示的选项已经打开:

    image

    使用Visual Studio打开Apworks.sln解决方案文件后,可立即编译,此时IDE会分析各个项目与程序集之间的依赖关系,并根据这些分析结果从NuGet Package站点上下载丢失的第三方程序集,然后对项目进行编译。

    由于整个Apworks框架并没有牵涉到32位/64位的PInvoke问题,因此不存在不同CPU架构之分,所有的编译都是基于Any CPU的架构。

    从配置管理器中我们可以看到,目前整个Apworks框架的编译支持以下几种配置:

    image

    • CoreDebug:以Debug方式仅编译Apworks框架的核心库,不编译单体测试项目,编译结果将输出到binDebug文件夹下。通常用这种方式产生可供调试的Apworks程序集
    • CoreRelease:以Release方式仅编译Apworks框架的核心库,不编译单体测试项目,编译结果将输出到binRelease文件夹下。通常用这种方式产生Apworks程序集的最终版本
    • Debug:以Debug方式编译所有项目,需要进行单体测试时,就应该以此配置进行编译。编译结果将输出到每个项目各自的binDebug文件夹下
    • MonoDebug:供Mono开发环境使用的Debug编译配置,可以在MonoDevelop或者xbuild中使用,编译结果将输出到binDebug文件夹下
    • MonoRelease:供Mono开发环境使用的Release编译配置,可以在MonoDevelop或者xbuild中使用,编译结果将输出到binRelease文件夹下
    • Release:以Release方式编译所有项目。编译结果将输出到每个项目各自的binRelease文件夹下

    注意:仅有Release的相关配置才会产生XML文档文件,Debug相关的配置不会产生XML文档文件。

    从命令行编译源代码

    在Windows系统中,打开Visual Studio的命令行工具。对于Visual Studio 2013,需要在“开始”菜单中找到Visual Studio 2013下Visual Studio Tools文件夹,然后在打开的文件夹中执行Developer Command Prompt for VS2013快捷方式:

    image

    在命令提示符中,进入Apworks代码库的主目录,然后执行build.bat来编译源代码:

    • 要以Debug配置对源代码编译,请执行以下命令,编译结果会输出到binDebug文件夹:build.bat Debug
    • 要以Release配置对源代码编译,请执行以下命令,编译结果会输出到binRelease文件夹:build.bat Release

    注意:由于Linux下NuGet Package Manager使用比较困难,因此这些第三方程序集都被打包成tar或者gz包并保存在文件服务器上。在Linux下使用build.sh来编译源代码时,build.sh会首先到文件服务器上下载并解压缩这些第三方程序集,然后对源代码进行编译。但由于近期文件服务器不可用,因此暂时还无法直接在Linux下对源代码进行直接编译。

    在Visual Studio中使用Apworks程序集

    Apworks通过NuGet Package Manager发布,因此,要在Visual Studio 2012+中使用Apworks,首先应当确保Visual Studio中已经安装了NuGet扩展。在需要使用Apworks程序集的项目上,单击鼠标右键,选择Manage NuGet Packages选项:

    image

    此时会弹出Manage NuGet Packages对话框:

    image

    在对话框的“搜索”文本框中,输入“Apworks”,此时,对话框中将列出所有与Apworks相关的Packages:

    image

    选中需要安装的Apworks组件,然后单击Install按钮将组件及其依赖组件安装到项目中。

    Apworks框架通过NuGet Package Repository向开发人员提供以下组件:

    • Apworks:Apworks框架的核心组件。所有Apworks相关的其它组件都依赖于该组件
    • Apworks Entity Framework Repository:基于Microsoft ADO.NET Entity Framework实现的仓储组件
    • Apworks MongoDB Repository:基于MongoDB的仓储组件
    • Apworks NHibernate Repository:基于NHibernate实现的仓储组件
    • Apworks Unity Object Container:基于Microsoft Patterns & Practices Unity实现的IoC容器组件
    • Apworks General Storage:基于SQL Server或者OleDB实现的数据访问组件
    • Apworks MySQL Storage:基于MySQL实现的数据访问组件
    • Apworks MSMQ Bus:基于MSMQ实现的消息总线组件
    • Apworks Event Aggregator Bus:基于事件聚合器的消息总线组件
    • Apworks Direct Bus Implementation:一个简单的消息总线的实现,发送到总线上的消息会立刻派发给已注册的消息处理器,仅供实验和学习使用。该组件将在后续版本中淘汰
    • Apworks General Event Storage:基于SQL Server或者OleDB实现的事件存储(Event Store)组件(将用于CQRS架构)
    • Apworks MySQL Event Storage:基于MySQL的事件存储组件(将用于CQRS架构)

    在向项目添加了所需的Apworks组件后,会在解决方案目录下的packages目录中产生如下目录结构,Apworks相关的程序集会被下载到这些目录中:

    image

    在下一篇文章中,我将介绍Apworks框架对测试驱动开发和持续集成,以及对各种现有流行框架的支持。

     
     
    分类: Apworks

    C# DataTable 转 List(大家进来讨论讨论)

     

    C# DataTable 转 List 方法,网上有好多,之前也收集了,感觉这个也不错,重要是自己要领会这里面的代码含义。

    接不来我就把代码贴出来分享一下,大家觉得如果不好,请留言我,我来改进。

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Reflection;
    
    namespace jdrz.HumanIdentify
    {
        public class Helper
        {
    
            /// <summary>
            /// DataTable 转换为List 集合
            /// </summary>
            /// <typeparam name="TResult">类型</typeparam>
            /// <param name="dt">DataTable</param>
            /// <returns></returns>
            public static List<TResult> ToList<TResult>(DataTable dt) where TResult : class, new()
            {
                //创建一个属性的列表
                var prlist = new List<PropertyInfo>();
                //获取TResult的类型实例  反射的入口
                var t = typeof(TResult);
                //获得TResult 的所有的Public 属性 并找出TResult属性和DataTable的列名称相同的属性(PropertyInfo) 并加入到属性列表 
                Array.ForEach(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); });
                //创建返回的集合
                var oblist = new List<TResult>();
    
                foreach (DataRow row in dt.Rows)
                {
                    //创建TResult的实例
                    var ob = new TResult();
                    //找到对应的数据  并赋值
                    prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); });
                    //放入到返回的集合中.
                    oblist.Add(ob);
                }
                return oblist;
            }
        }
    }

    总结一下:

    其实我想重写下Ado.net ,因为之前我们公司用的都是直接dataset to datatable ,现在发现 to list更方便(不知道大家有没有这种感觉),

    我自己用的是Nhibernate,所以基于公司内部的话,我想再写个Ado.net 转换数据的dll,最后我想说的是,大家在公司里都是用什么开发的?

    ado.net?nhibernate?Elinq?entityframework?希望大家一起讨论讨论!

     
     
    分类: C#.NET
  • 相关阅读:
    Silverlight 数据绑定 (1):怎样实现数据绑定
    DynamicPopulateExtender 控件调 WebService 的500错误
    [翻译]Linq 的 7 个技巧简化程序操作
    [Silverlight] 一个易犯的错误:关于调用 WCF 服务
    Silverlight 数据绑定 (2):Source to Target
    KB kb KB大小写
    C# winform 程序中响应键盘事件
    异常“企图释放并非呼叫方所拥有的多用户终端运行程序”的处理
    php完美截取中文字符函数mb_substr
    php面试题(三)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3644201.html
Copyright © 2011-2022 走看看