目前Camstar开发主要分为两种,1、基于Designer的CLF编程;2、基于C#的程序编程。在Designer环境下的CLF可以通过(对象实例.字段)的方式快速访问数据,但Designer并不是完善的编程工具,不方便调试,没有语法校验等功能,开发效率较低。对于C#提供的各种类库,CLF同样难以调用。而C#有强大的生态环境,工具齐全,类库丰富。
为了能在C#环境下,更加便捷的访问操作Camstar对象数据。决定基于ORM框架构建Camstar的数据访问工具包。
网上可选的ORM框架很多,各有优劣,最终综合考虑下选择能支持懒加载以及配置对象关系的EF Core 作为首选ORM框架。
一、项目地址 github:LicoCode/CamstarDbClient (github.com)  代码还在完善中。
git clone: https://github.com/LicoCode/CamstarDbClient.git 
二、使用示例 支持Oracle与SqlServer数据库
1 2 3 4 5 6 7 8 9 10 11 DbConfiguration.Type = "Oracle" ;  DbConfiguration.DefaultConnection = "user id=OPCENTER;data source=localhost:1521/orclpdb;password=******;" ; using  (var  client = new  DbClient()){     Factory factory = client.GetNDOByName<Factory>("Test" );     var  factoryName = factory.Name;     var  enterpriseName = factory.Enterprise.Name; } 
三、实体类示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 namespace  CamstarDbClient.Entities {                    [Table("FACTORY" ) ]     public  class  Factory : NamedDataObject      {         [Column("CDOTYPEID" ) ]         public  int ? CDOTypeId { get ; set ; }         [Column("CHANGECOUNT" ) ]         public  int ? ChangeCount { get ; set ; }              [Column("DESCRIPTION" ) ]         public  string ? Description { get ; set ; }              [ForeignKey("ENTERPRISEID" ) ]         public  virtual  Enterprise? Enterprise { get ; set ; }              [Key ]         [Column("FACTORYID" ) ]         public  string ? InstanceID { get ; set ; }              [Column("FACTORYNAME" ) ]         public  string ? Name { get ; set ; }              [Column("NOTES" ) ]         public  string ? Notes { get ; set ; }              [ForeignKey("PRINTQUEUEID" ) ]         public  virtual  PrintQueue? PrintQueue { get ; set ; }          } } namespace  CamstarDbClient.CamstarContext {     public  partial  class  CamstarDbContext  : DbContext  {         public  DbSet<Factory> Factorys { get ; set ; }     }     public  class  FactoryEntityTypeConfiguration  : IEntityTypeConfiguration <Factory >     {         public  void  Configure (EntityTypeBuilder<Factory> builder )         {                      }     } }