日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle

發布時間:2023/12/4 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用.net core也有一段時間了,一直都沒有Oracle官方的正式版驅動程序,更別說EF版本了。之前基于Oracle官方的.net core預覽版本寫了個Dapper的數據庫操作實現,但是總感覺不太完美,有消息稱Oracle官方的EF版本可能要到第三季度出了,還需要靜靜等待幾個月的時間。

  既然有了Beta版本的驅動,在git上看到有人實現了MySQL非官方的EF版本。于是決定自己動手實現一套EF Oracle版本,方便項目使用。經測試后已能正常使用,已上傳到Nuget,github上和大家共享。

Nuget引用地址

  項目基于Oracle.ManagedDataAccess.Core官方Beta版本驅動,Nuget上搜索Citms.EntityFrameworkCore.Oracle即可找到包。

  Oracle EF Core NuGet 地址:

  https://www.nuget.org/packages/Citms.EntityFrameworkCore.Oracle

  命令安裝:Install-Package?Citms.EntityFrameworkCore.Oracle

?

項目使用演示

  1.新建一個.NET Core控制臺應用程序?NETCoreOracle

  2.添加包引用

Install-Package Citms.EntityFrameworkCore.Oracle Install-Package Microsoft.Extensions.Logging.Console

  3.Oracle增刪查改

?測試所用SQL腳本

---------------------------部門表--------------------------------

declare? tableExist number;

begin

? ? select count(1) into tableExist from user_tables where upper(table_name)=upper('SYS_DEPARTMENT') ;

? ? if tableExist = 0? then

? ? ? ? execute immediate '

? ? ? ? ? ? CREATE TABLE SYS_DEPARTMENT(

? ? ? ? ? ? ? ? DEPARTMENTID VARCHAR2(32) DEFAULT sys_guid()? ?NOT NULL? ,

? ? ? ? ? ? ? ? BUNAME NVARCHAR2(50)? ?,

? ? ? ? ? ? ? ? BUFULLNAME NVARCHAR2(100)? ?,

? ? ? ? ? ? ? ? BUCODE NVARCHAR2(50)? ?,

? ? ? ? ? ? ? ? HIERARCHYCODE NVARCHAR2(500)? ?,

? ? ? ? ? ? ? ? PARENTGUID VARCHAR2(32)? ?,

? ? ? ? ? ? ? ? WEBSITE NVARCHAR2(50)? ?,

? ? ? ? ? ? ? ? FAX NVARCHAR2(20)? ?,

? ? ? ? ? ? ? ? COMPANYADDR NVARCHAR2(100)? ?,

? ? ? ? ? ? ? ? CHARTER NVARCHAR2(50)? ?,

? ? ? ? ? ? ? ? CORPORATIONDEPUTY NVARCHAR2(20)? ?,

? ? ? ? ? ? ? ? CREATEDON DATE? ?,

? ? ? ? ? ? ? ? MODIFIEDON DATE? ?,

? ? ? ? ? ? ? ? CREATEDBY VARCHAR2(32)? ?,

? ? ? ? ? ? ? ? COMMENTS NVARCHAR2(500)? ?,

? ? ? ? ? ? ? ? MODIFIEDBY VARCHAR2(32)? ?,

? ? ? ? ? ? ? ? ISENDCOMPANY NUMBER(1,0) DEFAULT 0? ?,

? ? ? ? ? ? ? ? ISCOMPANY NUMBER(1,0) DEFAULT 0? ?,

? ? ? ? ? ? ? ? BULEVEL INTEGER DEFAULT 0? ?,

? ? ? ? ? ? ? ? BUTYPE NUMBER(3,0) DEFAULT 0? ?,

? ? ? ? ? ? ? ? ORDERCODE NVARCHAR2(20)? ?,

? ? ? ? ? ? ? ? ORDERHIERARCHYCODE NVARCHAR2(500)? ?,

? ? ? ? ? ? ? ? AREACODE VARCHAR2(10)? ?,

? ? ? ? ? ? ? ? SIMPLECODE NVARCHAR2(50)? ?

? ? ? ? ? ? ? ? ? ? )

? ? ';


? ? ? ? execute immediate 'comment ON TABLE? SYS_DEPARTMENT IS ''組織機構表''';


? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.DEPARTMENTID is ''單位GUID''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.BUNAME is ''單位簡稱''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.BUFULLNAME is ''單位全稱''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.BUCODE is ''單位代碼''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.HIERARCHYCODE is ''層級代碼''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.PARENTGUID is ''父級GUID''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.WEBSITE is ''網址''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.FAX is ''傳真''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.COMPANYADDR is ''公司地址''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.CHARTER is ''營業執照''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.CORPORATIONDEPUTY is ''法人代表''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.CREATEDON is ''創建時間''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.MODIFIEDON is ''修改時間''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.CREATEDBY is ''創建人''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.COMMENTS is ''說明''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.MODIFIEDBY is ''修改人''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.ISENDCOMPANY is ''是否末級公司''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.ISCOMPANY is ''是否公司''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.BULEVEL is ''層級數''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.BUTYPE is ''組織類型''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.ORDERCODE is ''排序代碼''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.ORDERHIERARCHYCODE is ''排序層級代碼''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.AREACODE is ''單位所屬區域編碼''';

? ? ? ? execute immediate 'comment on column SYS_DEPARTMENT.SIMPLECODE is ''單位簡碼''';

? ? ? ??

? ? end if;

end;

---------------------------點位表--------------------------------

declare? tableExist number;

begin

? ? select count(1) into tableExist from user_tables where upper(table_name)=upper('COMMON_SPOTTING') ;

? ? if tableExist = 0? then

? ? ? ? execute immediate '

? ? ? ? ? ? CREATE TABLE COMMON_SPOTTING(

? ? ? ? ? ? ? ? SPOTTINGID VARCHAR2(50)? NOT NULL? ,

? ? ? ? ? ? ? ? SPOTTINGNO VARCHAR2(50)? NOT NULL? ,

? ? ? ? ? ? ? ? SPOTTINGNAME NVARCHAR2(100)? NOT NULL? ,

? ? ? ? ? ? ? ? UNIQUECODE VARCHAR2(50)? ?,

? ? ? ? ? ? ? ? ROADID VARCHAR2(50)? ?,

? ? ? ? ? ? ? ? LONGITUDE NUMBER(12,8)? ?,

? ? ? ? ? ? ? ? LATITUDE NUMBER(12,8)? ?,

? ? ? ? ? ? ? ? DEPARTMENTID VARCHAR2(50)? NOT NULL? ,

? ? ? ? ? ? ? ? SOURCEKIND VARCHAR2(50) DEFAULT ''local''? ?NOT NULL? ,

? ? ? ? ? ? ? ? CREATOR VARCHAR2(50)? NOT NULL? ,

? ? ? ? ? ? ? ? CREATEDTIME DATE DEFAULT sysdate? ?NOT NULL? ,

? ? ? ? ? ? ? ? MODIFIER VARCHAR2(50)? ?,

? ? ? ? ? ? ? ? MODIFIEDTIME DATE? ?,

? ? ? ? ? ? ? ? FLAGS VARCHAR2(10)? ?,

? ? ? ? ? ? ? ? REMARK NVARCHAR2(500)? ?,

? ? ? ? ? ? ? ? APPLICATIONNAME VARCHAR2(50) DEFAULT ''Citms.PIS''? ?NOT NULL? ,

? ? ? ? ? ? ? ? AREACODE VARCHAR2(50)? ?,

? ? ? ? ? ? ? ? BOPOMOFO VARCHAR2(200)? ?,

? ? ? ? ? ? ? ? SPOTTINGTYPE VARCHAR2(50)? ?,

? ? ? ? ? ? ? ? VIRTUALDELETEFLAG INTEGER DEFAULT 0? ?,

? ? ? ? ? ? ? ? DISABLED NUMBER(1,0) DEFAULT 0? ?,

? ? ? ? ? ? ? ? PUNISHDEPARTMENT VARCHAR2(50)? ?,

? ? ? ? ? ? ? ? DIVISIONCODE VARCHAR2(50)? ?,

? ? ? ? ? ? ? ? APPROVESTATUS INTEGER DEFAULT 0? ?,

? ? ? ? ? ? ? ? APPROVEUSERID VARCHAR2(50)? ?,

? ? ? ? ? ? ? ? APPROVETIME DATE? ?,

? ? ? ? ? ? ? ? APPROVEINFO NVARCHAR2(200)? ?,

? ? ? ? ? ? ? ? MAXWEIGHT NUMBER(12,4)? ?,

? ? ? ? ? ? ? ? MAXHEIGHT NUMBER(12,4)? ?,

? ? ? ? PRIMARY KEY(SPOTTINGID)?

? ? ? ? ? ? )

? ? ';


? ? ? ? execute immediate 'comment ON TABLE? COMMON_SPOTTING IS ''道路點位表''';


? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.SPOTTINGID is ''點位ID''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.SPOTTINGNO is ''點位編號(可以為廠家分配的點位編號)''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.SPOTTINGNAME is ''點位名稱''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.UNIQUECODE is ''上傳六合一標準代碼''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.ROADID is ''所在道路ID''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.LONGITUDE is ''經度坐標值''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.LATITUDE is ''緯度坐標值''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.DEPARTMENTID is ''所在管理部門''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.SOURCEKIND is ''來源類型''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.CREATOR is ''創建用戶ID''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.CREATEDTIME is ''創建時間''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.MODIFIER is ''修改人''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.MODIFIEDTIME is ''修改時間''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.FLAGS is ''保留標記''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.REMARK is ''備注''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.APPLICATIONNAME is ''應用名稱''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.AREACODE is ''所屬轄區代碼''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.BOPOMOFO is ''拼音簡稱''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.SPOTTINGTYPE is ''點位類型(字典表字典 ,Kind 為 1003 , 十字路口/丁字路口/圓形轉盤/其它)''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.VIRTUALDELETEFLAG is ''邏輯刪除標記(0 正常數據, 1 邏輯刪除)''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.DISABLED is ''是否停用(0 未停用, 1 停用),默認為0''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.PUNISHDEPARTMENT is ''處理單位''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.DIVISIONCODE is ''行政區劃代碼''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.APPROVESTATUS is ''審核狀態(0:未審核, 1:審核通過, 2:審核未通過), 默認為未審核狀態''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.APPROVEUSERID is ''審核用戶代碼''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.APPROVETIME is ''審核時間''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.APPROVEINFO is ''審核說明''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.MAXWEIGHT is ''最大限重(KG)''';

? ? ? ? execute immediate 'comment on column COMMON_SPOTTING.MAXHEIGHT is ''最大限高(m)''';

? ? ? ??

? ? end if;

end;

4.新建相關實體

///<summary>

? ? ///組織機構表

? ? ///</summary>

? ? [Table("SYS_DEPARTMENT")]

? ? public class? Department

? ? {

? ? ///<summary>

? ? ? ? ///單位GUID?

? ? ? ? ///</summary>?

? ? ? ? [Key,Column("DEPARTMENTID", TypeName = "VARCHAR2")]

? ? ? ? public string DepartmentId { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///單位簡稱?

? ? ? ? ///</summary>?

? ? ? ? [Column("BUNAME")]

? ? ? ? public string BuName { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///單位全稱?

? ? ? ? ///</summary>?

? ? ? ? [Column("BUFULLNAME")]

? ? ? ? public string BuFullName { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///單位代碼?

? ? ? ? ///</summary>?

? ? ? ? [Column("BUCODE")]

? ? ? ? public string BuCode { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///層級代碼?

? ? ? ? ///</summary>?

? ? ? ? [Column("HIERARCHYCODE",TypeName = "NVARCHAR2")]

? ? ? ? public string HierarchyCode { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///父級GUID?

? ? ? ? ///</summary>?

? ? ? ? [Column("PARENTGUID", TypeName = "VARCHAR2")]

? ? ? ? public string ParentGuid { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///網址?

? ? ? ? ///</summary>?

? ? ? ? [Column("WEBSITE")]

? ? ? ? public string WebSite { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///傳真?

? ? ? ? ///</summary>?

? ? ? ? [Column("FAX")]

? ? ? ? public string Fax { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///公司地址?

? ? ? ? ///</summary>?

? ? ? ? [Column("COMPANYADDR")]

? ? ? ? public string CompanyAddr { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///營業執照?

? ? ? ? ///</summary>?

? ? ? ? [Column("CHARTER")]

? ? ? ? public string Charter { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///法人代表?

? ? ? ? ///</summary>?

? ? ? ? [Column("CORPORATIONDEPUTY")]

? ? ? ? public string CorporationDeputy { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///創建時間?

? ? ? ? ///</summary>?

? ? ? ? [Column("CREATEDON", TypeName = "DATE")]

? ? ? ? public DateTime?? CreatedOn { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///修改時間?

? ? ? ? ///</summary>?

? ? ? ? [Column("MODIFIEDON", TypeName = "DATE")]

? ? ? ? public DateTime?? ModifiedOn { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///創建人?

? ? ? ? ///</summary>?

? ? ? ? [Column("CREATEDBY", TypeName = "VARCHAR2")]

? ? ? ? public string CreatedBy { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///說明?

? ? ? ? ///</summary>?

? ? ? ? [Column("COMMENTS")]

? ? ? ? public string Comments { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///修改人?

? ? ? ? ///</summary>?

? ? ? ? [Column("MODIFIEDBY", TypeName = "VARCHAR2")]

? ? ? ? public string ModifiedBy { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///是否末級公司?

? ? ? ? ///</summary>?

? ? ? ? [Column("ISENDCOMPANY")]

? ? ? ? public bool?? IsEndCompany { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///是否公司?

? ? ? ? ///</summary>?

? ? ? ? [Column("ISCOMPANY")]

? ? ? ? public bool?? IsCompany { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///層級數?

? ? ? ? ///</summary>?

? ? ? ? [Column("BULEVEL")]

? ? ? ? public? double?? BuLevel { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///組織類型?

? ? ? ? ///</summary>?

? ? ? ? [Column("BUTYPE")]

? ? ? ? public? double?? BuType { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///排序代碼?

? ? ? ? ///</summary>?

? ? ? ? [Column("ORDERCODE")]

? ? ? ? public string OrderCode { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///排序層級代碼?

? ? ? ? ///</summary>?

? ? ? ? [Column("ORDERHIERARCHYCODE")]

? ? ? ? public string OrderHierarchyCode { get; set; }

? ? ? ? ??

? ? ? ? ///<summary>

? ? ? ? ///單位所屬區域編碼?

? ? ? ? ///</summary>?

? ? ? ? [Column("AREACODE", TypeName = "VARCHAR2")]

? ? ? ? public string AreaCode { get; set; }

? ? ? ? ??

? ? }

///<summary>

? ? ///道路點位表 Spottings 有"s"后輟,與現有的Spotting區別開來

? ? ///</summary>

? ? [Table("COMMON_SPOTTING")]

? ? public class Spotting

? ? {

? ? ? ? ///<summary>

? ? ? ? ///點位ID?

? ? ? ? ///</summary>?

? ? ? ? [Key, Column("SPOTTINGID", TypeName = "VARCHAR2")]

? ? ? ? public string SpottingId { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///點位編號(可以為廠家分配的點位編號)?

? ? ? ? ///</summary>?

? ? ? ? [Column("SPOTTINGNO", TypeName = "VARCHAR2"),Required]

? ? ? ? public string SpottingNo { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///點位名稱?

? ? ? ? ///</summary>?

? ? ? ? [Column("SPOTTINGNAME")]

? ? ? ? [Required]

? ? ? ? public string SpottingName { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///上傳六合一標準代碼?

? ? ? ? ///</summary>?

? ? ? ? [Column("UNIQUECODE", TypeName = "VARCHAR2")]

? ? ? ? public string UniqueCode { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///所在道路ID?

? ? ? ? ///</summary>?

? ? ? ? [Column("ROADID", TypeName = "VARCHAR2")]

? ? ? ? public string RoadId { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///經度坐標值?

? ? ? ? ///</summary>?

? ? ? ? [Column("LONGITUDE")]

? ? ? ? public double? Longitude { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///緯度坐標值?

? ? ? ? ///</summary>?

? ? ? ? [Column("LATITUDE")]

? ? ? ? public double? Latitude { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///所在管理部門?

? ? ? ? ///</summary>?

? ? ? ? [Column("DEPARTMENTID", TypeName = "VARCHAR2")]

? ? ? ? [Required]

? ? ? ? public string DepartmentId { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///來源類型?

? ? ? ? ///</summary>?

? ? ? ? [Column("SOURCEKIND", TypeName = "VARCHAR2"), Required]

? ? ? ? public string SourceKind { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///創建用戶ID?

? ? ? ? ///</summary>?

? ? ? ? [Column("CREATOR", TypeName = "VARCHAR2")]

? ? ? ? public string Creator { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///創建時間?

? ? ? ? ///</summary>?

? ? ? ? [Column("CREATEDTIME", TypeName = "DATE")]

? ? ? ? public DateTime? Createdtime { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///修改人?

? ? ? ? ///</summary>?

? ? ? ? [Column("MODIFIER", TypeName = "VARCHAR2")]

? ? ? ? public string Modifier { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///修改時間?

? ? ? ? ///</summary>?

? ? ? ? [Column("MODIFIEDTIME", TypeName = "DATE")]

? ? ? ? public DateTime? ModifiedTime { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///保留標記?

? ? ? ? ///</summary>?

? ? ? ? [Column("FLAGS", TypeName = "VARCHAR2")]

? ? ? ? public string Flags { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///備注?

? ? ? ? ///</summary>?

? ? ? ? [Column("REMARK")]

? ? ? ? public string Remark { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///應用名稱?

? ? ? ? ///</summary>?

? ? ? ? [Column("APPLICATIONNAME", TypeName = "VARCHAR2")]

? ? ? ? public string ApplicationName { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///所在地區編號(行政區劃代碼)?

? ? ? ? ///</summary>?

? ? ? ? [Column("AREACODE", TypeName = "VARCHAR2")]

? ? ? ? public string AreaCode { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///拼音簡稱?

? ? ? ? ///</summary>?

? ? ? ? [Column("BOPOMOFO", TypeName = "VARCHAR2")]

? ? ? ? public string Bopomofo { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///點位類型(字典表字典 ,Kind 為 1003 , 十字路口/丁字路口/圓形轉盤/其它)?

? ? ? ? ///</summary>?

? ? ? ? [Column("SPOTTINGTYPE", TypeName = "VARCHAR2")]

? ? ? ? public string SpottingType { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///邏輯刪除標記(0 正常數據, 1 邏輯刪除)?

? ? ? ? ///</summary>?

? ? ? ? [Column("VIRTUALDELETEFLAG")]

? ? ? ? public double? VirtualDeleteFlag { get; set; }


? ? ? ? ///<summary>

? ? ? ? ///是否停用(0 未停用, 1 停用),默認為0?

? ? ? ? ///</summary>?

? ? ? ? [Column("DISABLED")]

? ? ? ? public bool? Disabled { get; set; }


? ? }

 5.新建DBContext

public class CommonDBContext : DbContext

? ? {

? ? ? ? //public CommonDBContext(DbContextOptions options) : base(options)

? ? ? ? //{

? ? ? ? //}


? ? ? ? protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

? ? ? ? {

? ? ? ? ? ? var logger = new LoggerFactory();

? ? ? ? ? ? logger.AddConsole();

? ? ? ? ? ? optionsBuilder.UseLoggerFactory(logger);

? ? ? ? ? ? optionsBuilder.UseOracle("DATA SOURCE=127.0.0.1:1521/tjims;PASSWORD=test;PERSIST SECURITY INFO=True;USER ID=test");

? ? ? ? ? ? base.OnConfiguring(optionsBuilder);

? ? ? ? }


? ? ? ? public DbSet<Spotting> Spotting { get; set; }


? ? ? ? public DbSet<Department> Department { get; set; }

? ? }


6.增刪改代碼演示

static void Main(string[] args)

? ? ? ? {

? ? ? ? ? ? using (CommonDBContext db = new CommonDBContext())

? ? ? ? ? ? {

? ? ? ? ? ? ? ? int total = db.Spotting.Count();

? ? ? ? ? ? ? ? Console.WriteLine("路口總行數:{0}", total);

? ? ? ? ? ? ? ? var fDisItem = db.Spotting.FirstOrDefault(e => e.Disabled == true);

? ? ? ? ? ? ? ? Console.WriteLine("第一條禁用路口:{0}", fDisItem.SpottingName);

? ? ? ? ? ? ? ? //分頁查詢演示

? ? ? ? ? ? ? ? var pageList = db.Spotting.Where(e => e.Disabled == true)

? ? ? ? ? ? ? ? ? ? .OrderBy(e => e.SpottingName).Skip(10).Take(20).ToList();

? ? ? ? ? ? ? ? Console.WriteLine("分頁查詢禁用路口:{0}", pageList.Count);

? ? ? ? ? ? ? ? var list = db.Spotting.ToList();

? ? ? ? ? ? ? ? string[] arrSpottingNo = new string[] { "123", "34" };

? ? ? ? ? ? ? ? db.Spotting.Where(e => arrSpottingNo.Contains(e.SpottingNo)).ToList();




? ? ? ? ? ? ? ? string minSpottingNo = db.Spotting.Min(e => e.SpottingNo);

? ? ? ? ? ? ? ? string maxSpottingNo = db.Spotting.Max(e => e.SpottingNo);

? ? ? ? ? ? ? ? string[] arrAreaCode = db.Spotting.Select(e => e.AreaCode).Distinct().ToArray();

? ? ? ? ? ? ? ? db.Spotting.Average(e => e.Longitude);

? ? ? ? ? ? ? ? var dt = DateTime.Now.AddDays(-100);

? ? ? ? ? ? ? ? //日期過濾

? ? ? ? ? ? ? ? db.Spotting.Where(e =>

? ? ? ? ? ? ? ? ? ? e.Createdtime >= dt && e.Createdtime <= DateTime.Now && e.Disabled == true).ToList();



? ? ? ? ? ? ? ? var itemNew = new Spotting

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? SpottingId = Guid.NewGuid().ToString("N"),

? ? ? ? ? ? ? ? ? ? SpottingName = "test",

? ? ? ? ? ? ? ? ? ? SpottingNo = "test",

? ? ? ? ? ? ? ? ? ? Creator = "admin",

? ? ? ? ? ? ? ? ? ? Createdtime = DateTime.Now,

? ? ? ? ? ? ? ? ? ? DepartmentId = Guid.NewGuid().ToString("N")

? ? ? ? ? ? ? ? };

? ? ? ? ? ? ? ? db.Entry(itemNew).State = EntityState.Added;

? ? ? ? ? ? ? ? Console.WriteLine("新增一條路口Id:{0} 數據", itemNew.SpottingId);


? ? ? ? ? ? ? ? var dItem = db.Spotting.Find(itemNew.SpottingId);

? ? ? ? ? ? ? ? db.Remove(dItem);

? ? ? ? ? ? ? ? Console.WriteLine("刪除路口Id:{0} 數據", itemNew.SpottingId);


? ? ? ? ? ? ? ? //關聯查詢

? ? ? ? ? ? ? ? var x = (from p in db.Spotting

? ? ? ? ? ? ? ? ? ? ? ? ?join q in db.Department

? ? ? ? ? ? ? ? ? ? ? ? ?on p.DepartmentId equals q.DepartmentId

? ? ? ? ? ? ? ? ? ? ? ? ?select new { p.SpottingName, p.SpottingId, p.DepartmentId, q.BuName }).OrderBy(e => e.SpottingName)

? ? ? ? ? ? ? ? ? ? ? ? ?.Skip(10).Take(20).ToList();


? ? ? ? ? ? ? ? db.SaveChanges();

? ? ? ? ? ? }

? ? ? ? ? ? Console.Read();

? ? ? ? }

?

?

回到頂部

Github源碼地址

https://github.com/CrazyJson/Citms.EntityFrameworkCore.Oracle,有興趣的可以把源碼下下來看看。

回到頂部

總結

? ? ? 如果項目中也想使用EF Core Oracle,可以安裝包開始Coding。如果使用中遇到BUG,請在Git上回復,我將進行修復。后續等Oracle官方出了正式版后,可以直接進行替換。

項目代碼參考EF Core?https://github.com/aspnet/EntityFrameworkCore/tree/dev/samples/OracleProvider。

原文地址:https://www.cnblogs.com/yanweidie/p/9064609.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。