- .net core 基于spring cloud 微服务开发
- .net core全新的ORM框架
- .net core基于nacos服务注册和发现
- 基于 Spring Security oAuth 深度定制,支持社交登录等
- 完整的OAuth 2.0 流程,资源服务器控制权限
├─skynet-cloud
│ │
│ ├─01.Skynet.Cloud.Framework
│ │ │
│ │ ├─1.Projects-------------工程
│ │ │ │
│ │ │ ├─Skynet.Cloud.ConnectionBase-------------设置连接信息
│ │ │ │
│ │ │ ├─Skynet.Cloud.Dicovery.Core-------------发现注册
│ │ │ │
│ │ │ ├─Skynet.Cloud.Discovery.Abstract-------------跨服务调用超类
│ │ │ │
│ │ │ ├─Skynet.Cloud.Data-------------ORM
│ │ │ │
│ │ │ ├─Skynet.Cloud.Framework-------------框架基础组件
│ │ │ │
│ │ │ ├─Skynet.Cloud.Mvc-------------Mvc基础扩展
│ │ │ │
│ │ │ ├─Skynet.Cloud.IE-------------导入导出
│ │ │ │
│ │ │ ├─Skynet.Cloud.Sms-------------短信
│ │ │ │
│ │ │ ├─Skynet.Cloud.Tasks-------------任务调度
│ │ │ │
│ │ │ ├─Skynet.Cloud.Nacos-------------Nacos访问
│ │ │ │
│ │ │ ├─Skynet.Cloud.Security-------------安全设置
│ │ │ │
│ │ │ ├─Steeltoe.Configuration.NacosServerBase-------------Nacos注册中心
│ │ │ │
│ │ │ ├─Steeltoe.Discovery.NacosBase-------------Nacos服务发现
│ │ │
│ │ ├─2.UnitTest-------------单元测试
│ │ │
│ │ ├─3.Demo-------------示例
│ │
│ ├─skynet-cloud-common-------------类库
│ │ │
│ │ ├─skynet-cloud-common-core-------------基础核心类库
│ │ │
│ │ ├─skynet-cloud-common-data-------------数据库访问核心
│ │ │
│ │ ├─skynet-cloud-common-feign-------------远程调用核心类库
│ │ │
│ │ ├─skynet-cloud-common-log-------------日志核心类库
│ │ │
│ │ ├─skynet-cloud-common-security-------------安全验证核心类库
│ │
│ ├─skynet-cloud-modules-------------模块类库
│ │ │
│ │ ├─skynet-cloud-dcs-------------数据中心服务
│ │ │
│ │ ├─skynet-cloud-ccs-------------字典中心服务
│ │ │
│ │ ├─skynet-cloud-nom-------------网络管理服务
│ │ │
│ │ ├─skynet-cloud-upms-------------系统管理服务
│ │
│ ├─skynet-cloud-auth-------------权限管理
│ │
│ ├─skynet-cloud-gateway-------------网关
│ │
│ ├─skynet-cloud-visual-------------可视乎类库
│ │ │
│ │ ├─skynet-cloud-codegen-------------代码生成
│ │ │
│ │ ├─skynet-cloud-monitor-------------spring boot观察类库
ULinq是一个轻量简单易用的开源Linq ORM框架,支持Nullable类型和枚举类型,支持根据实体类自动建库建表建关系,对Linq的谓词提供了完美的支持,旨在让绝大部份的主流数据库都使用 Linq 来进行程序开发,让开发人员访问数据库从SQL中解放出来,易学易用上手快,配置简单,并且提供了源代码下载,方便定制。支持多数据库,目前支持Access、SQLServer、SqlCE、SQLite、MySQL、ORACLE,未来还会支持更多的数据库。
- Access_SQLServer_Oracle Access_SQLServer_Oracle文档
- Enum、Guid转化 EnumAndGuidConverTest
- 支持的Linq方法 Functions
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace UWay.Ufa.Enterprise.Entity
{
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
- Name 属性 用来描述Table Name
默认约定:表名和实体类名完全一致
重写方式一:使用DbConfiguration SetClassNameToTalbeName(Func<string, string> fnClassNameToTableName),表名和类名不一样,但是大部分都遵循一定的规律,比如表名都是复数,类名都是单数,那么可以自定义这种类名到表名的映射规则,少数不一致的可以通过重写方式二进行
DbConfiguration
.Configure(connectionStringName)
.SetSqlLogger(() => new SqlLog(Console.Out))
.SetClassNameToTalbeName(DbConfiguration.Plural);//把类名转化为复数形式的表名
重写方式二:标签方式
[Table(Name = "Order Details")]
public class OrderDetail {}
重写方式三:使用Fluent Api来设置类名到表名间的映射,例如 把OrderDetail 实体类名映射到表名为:Order Details
DbConfiguration
.Configure(connectionStringName)
.SetSqlLogger(() => new SqlLog(Console.Out))
.AddClass(p =>
{
p.TableName("Order Details");
});//注册映射类 - Readonly 属性用来描述表是否是只读的
默认约定:false, 表示可以增删改查
重写方式一:标签方式
[Table(Name = "Order Details",Readonly=true)]
public class OrderDetail
重写方式二:Fluent API
p.TableName("Order Details").Readonly(); - Schema 属性,数据库schema名称,可选的
默认约定:null
重写方式一:标签方式
[Table(Name = "Order Details",Readonly=true, Schema="dbo")]
public class OrderDetail
重写方式二:Fluent API
p.TableName("Order Details").Readonly().Schema("dbo");
完整的基于Lambda表达式的Fluent API配置代码如下:
static DbConfiguration dbConfiguration3 = DbConfiguration
.Configure(connectionStringName)
.AddClass(p => { p.TableName("Order Details").Readonly().Schema("dbo"); });
Attribute的映射配置方式和LinqToSQL的配置方式类似,不用太多的笔墨进行介绍每个Attribute的含义,直接用代码说话。 (以Northwind数据库的Customers表和Orders 表为例,客户和订单是一对多关系为例)
[Table(Name = "Customers")]
public class Customer
{
[Id(Name="CustomerId")]//主键映射
public string Id;
[Column]public string ContactName;
[Column]public string CompanyName;
[Column]public string City;
[Column]public string Country;
[Ignore]public string Phone;//忽略,不映射该字段
}
[Table(Name = "Orders")]
public class Order
{
[Id(IsDbGenerated = true)]//该主键是自动增一
public int OrderID;
[Column]public string CustomerID;//外键字段
[Column]public DateTime OrderDate;
}
ULinq基于Attribute的配置方式:
TableAttribute:映射表名
IdAttribute:映射主键的, IsDbGenerated=true 属性标致主键是自动增一的
IgnoreAttribute:忽略映射的
ColumnAttribute: 映射列的
AssociationAttribute:映射关系的,一对多,多对一,一对一都用这一个标签
-
定义实体类
public class Customer { public string Id; public string ContactName; public string CompanyName; public string City; public string Country; public string Phone; } public class Order { public int OrderID; public string CustomerID; public DateTime OrderDate; }
-
引入FluentAPI的命名空间 using UWay.Skynet.Cloud.Data.Mapping.Fluent
-
创建CustomerMap类
class CustomerMap : ClassMap<Customer> { public CustomerMap(){ //设置TableName映射 TableName("Customers"); // 设置主键映射,把Id属性映射到数据表的CustomerId列上 Id(e => e.Id).ColumnName("CustomerId"); //列映射 Column(e => e.ContactName).ColumnName("ContactName"); Column(e => e.CompanyName); Column(e => e.City); Column(e => e.Country); //Phone 字段忽略映射 Ignore(e => e.Phone); }
}
ULinq.Xsd 定义了Mapping、Table、Id、Column、ComputedColumn、Association、Version等 映射元素 创建映射文件
- Skynet.Cloud.ApiDemo:普通WebApi没有支持Spring Cloud
- Skynet.Cloud.Cloud.CloudFoundryDemo: 支持Spring Cloud的API微服务开发