zoukankan      html  css  js  c++  java
  • LLBL Gen Pro 5.0

    LLBL Gen Pro 5.0 企业应用开发入门

    Solutions Design 公司于2016年5月发布了LLBL Gen Pro 5.0,这个新版本的发布出乎于我的意料。我的猜想是从4.2升级到4.5,再升级5.x版本,主版本号的变更会给原有客户带来成本上的压力。299欧元的售价对于中小创业公司或大公司并不算便宜,在官网上查了一下最新的报价,如下表所示:

     

    Number of licenses Price per license Standard Price per license Plus
    1 to 2 € 299.- € 398.-
    3 to 5 € 269.- € 368.-
    6 to 10 € 259.- € 358.-
    11 to 20 € 249.- € 348.-
    more than 20 € 239.- € 338.-

     

    新版本的LLBL Gen Pro在界面存在相当多的变化,引入了类似Visual Studio(VS look-like)的界面风格-扁平化,日常的一些操作界面也有变化。

     

    image

     

    1 创建新项目,选择LLBL Gen Pro Runtime Framework

     

    image

     

    从上图中看出,LLBL Gen Pro支持Entity Framework开发和NHibernate的开发。从维基百科中查询到,目前.NET领域中有以下17种流行的ORM框架。

     

    序号

    项目

    官方地址

    1

     Base One Foundation Component Library  www.boic.com

    2

     Castle ActiveRecord  http://www.castleproject.org/projects/activerecord/

    3

     DatabaseObjects  http://www.hisystems.com.au/databaseobjects

    4

     DataObjects.NET  http://dataobjects.net/

    5

     Dapper  github.com/StackExchange/dapper-dot-net

    6

     ECO  http://www.capableobjects.com

    7

    Entity Framework

    msdn.microsoft.com/en-us/data/ef.aspx

    8

     EntitySpaces  http://www.entityspaces.net

    9

     iBATIS  http://ibatis.apache.org

    10

     LINQ to SQL  msdn.microsoft.com/en-us/data/ef.aspx

    11

     Neo  http://neo.sourceforge.net/

    12

     NHibernate  nhibernate.info

    13

     nHydrate  http://www.nhydrate.org/

    14

     Persistor.NET  http://www.persistor.net/ (已经失效)

    15

     Quick Objects  http://www.quickobjects.com/ (已经失效)

    16

     SubSonic  http://subsonicproject.com/

    17

     XPO  https://www.devexpress.com/

     

    地址 https://en.wikipedia.org/wiki/List_of_object-relational_mapping_software

     

    其中大部分ORM框架都停止更新或不再维护,非常可惜。 

     

    2 选择关系数据库

     

    在Catalog Explorer(数据库浏览器)中选择从数据库生成关系模型

     

    image

     

    LLBL Gen Pro 支持Model-First或Database-First两种开发模型,也可以考虑新创建模型,再通过上图中Generate Database Schema Create Script菜单项生成数据库脚本,以实现模型驱动开发。

     

    我们选择SQL Server 数据库驱动,设置连接信息,并点击下一步按钮。

     

    image

     

    3 选择要映射的数据库表,视图,存储过程

     

    image

     

    经过这一步之后,表还没有映射到实体中,我们需要在此窗体关闭后,在Database Explorer中以选择表的方式创建实体对象,这样就完成了表与实体的映射设计。

     

    image

     

    到这里,我们就完成了数据库表与实体映射的设置工作。如下图所示,在Project Explorer(项目浏览器)中看到新增加的实体Bug,可通过右键选择实体编辑它的,比如设定Type Converter,字段的附加属性等操作。

     

    image

     

     

    4 生成Visual Studio 项目文件和源代码文件

     

    点击工具栏中的按钮Generate Source Code或按F7,弹出代码生成选项窗体:

     

    image

     

    LLBL Gen Pro这里有一个很方便的功能改进,在这里我们可以定义一个或多个生成选项,并将它保存起来,下次生成项目文件时,只需要勾选相应的项目生成选项即可。

     

    点击按钮Edit Selected Task Specifics,弹出生成窗体。点Advanced…按钮可选择项目生成模板。

     

    image

     

    之后再点击确定按钮,返回生成选项窗体,现在变成了绿色的勾,表示当前生成任务有效。

     

    image

     

    点击Perform Tasks…完成项目代码的生成。

     

    5 启动Visual Studio 加载LLBL Gen Pro生成的两个项目,创建Windows Forms测试项目。

     

    image

     

    为了读取数据库BugTracker中的表Bugs的数据,请参考以下步骤完成:

     

    1) 打开数据源窗体中,选择创建数据源,选择Object类型,并选择第4步生成的BugEntity实体

     

    2) 拖放一个BindingSource控件到窗体中,设定此控件的数据源为上一步的数据源BugEntity

     

    3) 拖一个DataGridView控件到界面中,选择数据源为上一步的数据源控件

     

    在窗体启动事件中增加以下代码以读取数据库中的Bugs表数据。

     

    const string connectionString = "data source=(local);initial catalog=BugTracker;integrated security=SSPI;persist security info=False;packet size=4096";
    

     

    
    

     

    using (DataAccessAdapter adapter = new DataAccessAdapter(connectionString))
    

     

    {
    

     

         IRelationPredicateBucket bucket=new RelationPredicateBucket();
    

     

         bucket.PredicateExpression.Add(BugFields.BgReportedDate > new DateTime(2013, 12, 31));
    

     

         ISortExpression sortExpression=new SortExpression(BugFields.BgReportedDate|SortOperator.Descending);
    

     

         IPrefetchPath2 prefetchPath=new PrefetchPath2(EntityType.BugEntity);
    

     

         EntityCollection collection = new EntityCollection(new BugEntityFactory());
    

     

         adapter.FetchEntityCollection(collection, bucket, 0, sortExpression, prefetchPath,null);
    

     

     
    

     

        bugBindingSource.DataSource = collection;
    

     

        gridBugs.DataSource = bugBindingSource;
    

     

    }

     

    这段代码的目的是读取Bug报告日期迟于2013年12月31日的Bug,按照报告日期倒序排列。我将它翻译成SQL供参考

     

    SELECT * FROM Bugs 
    

     

    WHERE BgReportedDate>'2013/12/31' 
    

     

    ORDER BY BgReportedDate DESC 
    

     

    整个程序开发过程书写没超过10行代码,开发效率与微软的Entity Framework不相上下,是EF之外的又一重量级数据存取解决方案。官网上号称世界上有100多个国家,超过5500多个客户正在使用这一套ORM开发框架。

  • 相关阅读:
    select选中值传递到后台action中
    select into from 与insert into select from区别
    存储过程
    layer
    下拉框两级联动
    无限纠结——Zedboard上跑ubuntu详解
    静态时序分析SAT
    设计模式-(构型模式)
    内存断点调试的原理
    C语言中使用静态函数的好处
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5544191.html
Copyright © 2011-2022 走看看