Moon.Orm总论

 

Moon.Orm 4.5技术详解及研发平台免费发布

 

一、Moon.Orm概述

Moon.Orm是一个历经三年开发一套.Net Orm框架.但凡众多的智慧都是及其简单的,但不为人所知.这也是Moon.ORM的主要特色:大道至简.

不得不承认linq和lambda语句带来的优雅,但同时我们需要承认linq的局限性:linq不是银弹,因为负责的场合linq几乎是做不到的,何况linq生成的sql不一定是你真正要的.(不是敌对linq,而是说实话,正如曾说:实际开发中没有银弹,只有平衡点,适合需求能解决实际情况的架构那就够了).而且我也没有必要再去写一个框架,做一个类似Nhibernate,或者实体框架的东西.做东西我一直认为需要能有自我特色和自我优势.

二、Moon.Orm特色及优势

1.高性能是Moon.ORM优势之一,也是我架构它的主要目的之一,我已经将它的性能提升到了极致.如以前我说的那样,是为了弥补项目中遇到的性能问题而设计.可以说对于整个框架数据处理上采用了纯的ADO.NET进行自动编译的同时结合了EMIT达到快速生成实体的目的

2.易用性强,我想用过Moon.ORM的应该可以知道这点.配置简单,智能感知,代码生成器的辅助,会sql就可会用使用它;

3.多数据库多数据源支持.在同一个项目中我们需要处理这种情况时,Moon.ORM是你最好的选择.如你系统默认为MSSQL,现在要同时使用 MYSQL,你只需要实例化一个引擎就可以.DBFactory.GetEntity<Person> (pjy_AdminRoleTable.RoleID.BiggerThan(0),new MYSQL("连接字符串"));当然你可以把引擎做成全局的;

4.强大的语法糖功能.个人使用的结果是大概能满足我实际需求的70%以上的功能;

5..NET 2.0原生支持,这个就不用说了;

6.数据库更换方便,如果你发现你有一天你的数据库需要从mysql转变到mssql,你只需要转变你的配置文件即可.(当然sql语法差异的问题,,如果你在用原生的sql进行操作时,你需要自己注意了);

7.数据库变动一键重新编译,无需手动修改代码.

三、Moon.Orm实战项目经验

历经了几个公司的发展和使用,稳定性可得而知.曾在合富网络的主营产品中应用于一年的开发框架中.及潘家园文化传媒主营平台新系统.且得到Moon诸多爱好者在实际企业项目中的肯定.

四、使用问题

    此框架对于任何人群及个人可以免费使用,无偿技术支持.

群一:216965349 群二:225656797 邮件:qsmy_qin@163.com

五、开发步骤

1.        配置及启动研发平台

(1)      如果您要开发基于mysql数据库的项目,请先在研发平台的配置文件中添加一个mysql.data.dll的路径.

 

Moon.Orm 4.5技术详解及研发平台免费发布

 

 

Moon.Orm 4.5技术详解及研发平台免费发布
 

 

我们之所以这么做,是因为mysql.data.dll是基于GPL的,版权问题用户需要自行解决.如果您开发sqlserver,postgreSQL,sqlite就可以免去上一个步骤.

MySql.Data.dll下载地址:

http://dev.mysql.com/downloads/mirror.php?id=406542

(2)启动研发平台

 

Moon.Orm 4.5技术详解及研发平台免费发布
 

 

(启动界面)

我们现在需要新建一个项目.

 

Moon.Orm 4.5技术详解及研发平台免费发布

 

(如何配置一个开发项目)

 

Moon.Orm 4.5技术详解及研发平台免费发布

 

(填写完毕后 登陆进入)

 

Moon.Orm 4.5技术详解及研发平台免费发布
 

 

2.        生成实体层

 

Moon.Orm 4.5技术详解及研发平台免费发布

 

Moon.Orm 4.5技术详解及研发平台免费发布
 

 

 

 

3.        编译实体层

 

Moon.Orm 4.5技术详解及研发平台免费发布
 

 

4.        在您的实际项目中配置Moon.Orm

 

Moon.Orm 4.5技术详解及研发平台免费发布

 

Moon.Orm 4.5技术详解及研发平台免费发布
 

 

 
Moon.Orm 4.5技术详解及研发平台免费发布

 

将这些数据复制到您实际的项目中的配置文件里面(appsettings下)

记住如果是mysql,需要向上面那样指定mysql.data.dll的路径

因入生成的dll或者直接用生成的*.cs

5.        进行编码

 

 

Moon.Orm 4.5技术详解及研发平台免费发布
 

 

六、如何使用Moon.Orm->CRUD

http://www.cnblogs.com/humble/archive/2012/12/01/2797450.html

 

using System;
using System.Collections.Generic;
using System.Data;

using Moon.Orm;
using MoonDB;
namespace r
{
    
class Program
    {
        
public static void Main(string[] args)
        {
           
//------------------------
            Console.
WriteLine("1 排序操作--------");
            List<UserSet> list=DBFactory.GetEntities<UserSet>(
                UserSetTable.ID.
BiggerThan(0).OrderBy(UserSetTable.UserName,true));
             
foreach (UserSet element in list) {
                Console.
WriteLine(element.UserName+"  "+element.ID);
             }
             
            
//-----------------------------------
            Console.
WriteLine("2 添加操作------");
            UserSet user=
new UserSet();
            user.date=DateTime.Now;
            user.datetime=DateTime.Now;
            user.money=
123M;
            user.UserName=
"秦时明月";
            
object newID=DBFactory.Add(user);
            Console.
WriteLine("新增数据的主键为:"+newID);

            Console.
WriteLine("3 修改操作------");
            
            UserSet updateUser=
new UserSet();
            updateUser.UserName=
"秦时明月-updateUser";
            
//设置更新目标
            updateUser.
SetOnlyMark(user.GetOnlyMark());
            DBFactory.
Update(updateUser);
            Console.
WriteLine("被修改的对象:"+updateUser.GetOnlyMark());
            Console.
WriteLine("修改后的对象值为:");
            
string name=DBFactory.GetOneField<string>(UserSetTable.UserName ,updateUser.GetOnlyMark());
            Console.
WriteLine(name);
            Console.
Read();
            
        }
    }
}

七、复杂查询

i.          嵌套查询

UserTable.ID.In(ClassTable.UserID.SelectWhere(CID.Equal(9));

-----------------------相当于-----

select * from user

where id in(

select userid from

class where cid=9) 

ii.        连接查询

右连接查询(左连接查询是一样的)

var list=DBFactory.GetRightJoinEntities<Customers,Orders>
                (CustomersTable.CustomerID.
Equal(OrdersTable.CustomerID),Field.ALL_WHERE,Field.ALL_FIELDS);
            
foreach (var a in list) {
                JoinData<Customers,Orders> data=a;
                Console.
WriteLine(data.Left.CustomerID+"  "+data.Left.CustomerName+" "+data.Right.OrderID);
            }

iii.     使用代码生成器

生成类名 newUser=DBFactory.GetEntity(sql语句);

iv.      .NET 4.0的环境下使用dynamic

dynamic list=DBFactory.GetAutoEntities("相当复杂的一个sql查询语句","自定义类名");
for(var a in list){
int count=a.Count;
string country=a.Country;
}

v.         智能实体,不需要代码生成器,如下

             var list=DBFactory.GetIntelligentEntities("select * from [User]");
            Console.
WriteLine(list[index]["username"].To<string>());(注意字段全是小写)var user=DBFactory.GetIntelligentEntity("select * from [User] where age>3");
            Console.
WriteLine(user["username"].To<string>());

 

八、常见问题

http://www.cnblogs.com/humble/archive/2012/12/12/2814040.html

 

九、最新版下载地址

http://www.cnblogs.com/humble/archive/2012/09/02/2667843.html

 

 

相关文章:

  • 2022-02-02
  • 2021-10-10
  • 2022-12-23
  • 2022-01-08
  • 2022-02-19
  • 2022-02-18
猜你喜欢
  • 2021-10-18
  • 2021-07-04
  • 2021-06-22
  • 2022-02-01
  • 2021-11-12
  • 2021-12-01
  • 2022-12-23
相关资源
相似解决方案