Nuget控制台:

Install-Package log4net
Install-Package Newtonsoft.Json
Install-Package Autofac
Install-Package Autofac.Extensions.DependencyInjection
Install-Package AutoMapper
Install-Package Dapper
Install-Package Microsoft.Extensions.Options
Install-Package Microsoft.Extensions.Caching.Abstractions
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design Install-Package Oracle.EntityFrameworkCore
Install-Package Oracle.ManagedDataAccess.Core Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.Relational
Install-Package Microsoft.EntityFrameworkCore.Design
Install-Package Microsoft.EntityFrameworkCore.Tools Scaffold-DbContext -Force "Data Source=" Oracle.EntityFrameworkCore-OutputDir Models/DataModels -Context MyDbContext -Schemas aaa -Tables bbb

  

 

Scaffold命令格式:

Scaffold-DbContext [-Connection] <String> [-Provider] <String>
[-OutputDir <String>] [-Context <String>] [-Schemas <String>]
[-Tables <String>] [-DataAnnotations] [ -Force] [-Project <String>]
[-StartupProject <String>] [-Environment <String>] [<CommonParameters>]

Startup.cs

 public class Startup
{
//log4net日志
public static ILoggerRepository LogRepository { get; set; }
public IConfiguration Configuration { get; } public Startup(IConfiguration configuration)
{
Configuration = configuration; Init();
}
public void Init()
{
// 加载log4net日志配置文件
LogRepository = LogManager.CreateRepository("NETCoreRepository");
XmlConfigurator.Configure(LogRepository, new FileInfo("log4net.config"));
LogHelper.RepositoryName = LogRepository.Name; // appSettings 配置类初始化
//ConfigHelper.Init(Configuration.GetSection("appSettings")); // 唯一Id生成器
//SnowflakeInit.Init(Configuration); // 邮件初始化
//MailInit.Init(Configuration); // 系统启动日志
LogHelper.Write("TestApi Start()");
} /// <summary>
/// 此方法由运行时调用。使用此方法向容器添加服务。
/// This method gets called by the runtime. Use this method to add services to the container.
/// </summary>
public IServiceProvider ConfigureServices(IServiceCollection services)
{
//注册Cookie认证服务
//services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(); // 添加MemoryCache
services.AddMemoryCache();
// 支持HttpContext
services.AddHttpContextAccessor();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// 实现小写的路由URL
services.AddRouting(options => options.LowercaseUrls = true);
// 添加自动映射
//services.AddAutoMapper(); // 对 JSON 数据使用混合大小写。驼峰式,但是javascript 首字母小写形式. 默认值
// services.AddMvc().AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); });
services.AddMvc().AddJsonOptions(options =>
{
// 忽略循环引用
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
// 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出
options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
// 格式化json日期
options.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.IsoDateTimeConverter { DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss'.'fff" });
// long型转string
options.SerializerSettings.Converters.Add(new Utils.LongToStringConverter());
}); //配置跨域处理,允许所有来源:
services.AddCors(options =>
{
options.AddPolicy("cors", set =>
{
set.SetIsOriginAllowed(origin => true). //允许任何来源的主机访问
AllowAnyHeader().
AllowAnyMethod().
AllowCredentials(); //指定处理cookie
});
}); // 添加EF Oracle支持
services.AddDbContext<MyDbContext>(options => options.UseOracle(Configuration.GetConnectionString("OracleConnectionString")));
// 如果使用SQL Server 2008数据库,请添加UseRowNumberForPaging的选项
// 参考资料:https://github.com/aspnet/EntityFrameworkCore/issues/4616
// options.UseSqlServer(Configuration.GetConnectionString("MyDbContent"),b=>b.UseRowNumberForPaging()) // 添加Dapper
//services.AddDapper("OracleConnection", options =>
//{
// options.ConnectionString = Configuration.GetConnectionString("OracleConnectionString");
// options.DbType = DbStoreType.Oracle;
//}); // Add service filters.
//services.AddScoped<MyAuthAttribute>();
//services.AddSingleton<MyAuthRepository>(); //注入全局异常捕获
services.AddMvc(options =>
{
options.Filters.Add(typeof(GlobalExceptions)); // By type
}); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); // 注册Autofac
return RegisterAutofac(services);
}
private IServiceProvider RegisterAutofac(IServiceCollection services)
{
//实例化Autofac容器
var builder = new ContainerBuilder();
//将Services中的服务填充到Autofac中
builder.Populate(services);
//新模块组件注册
builder.RegisterModule<AutofacModule>();
//创建容器
var Container = builder.Build();
//第三方IOC接管 core内置DI容器
return new AutofacServiceProvider(Container);
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime appLifetime)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
} app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseCors("cors");
app.UseMvc(); //程序停止调用函数
//appLifetime.ApplicationStopped.Register(() => { AutofacContainer.Dispose(); });
}
}

  Program:

 public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
var configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("host.json")
.Build(); return WebHost.CreateDefaultBuilder(args)
.UseUrls(configuration["urls"])
.UseStartup<Startup>();
}
}

  host.json

{
"urls": "http://*:8080;https://*:443"
}

  AutofacModule

 public class AutofacModule : Autofac.Module
{
/// <summary>
/// 重写Autofac管道Load方法,在这里注册注入
/// </summary>
/// <param name="builder"></param>
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<MyDbContext>(); //注册Service中的对象,Service中的类要以Service结尾,否则注册失败
builder.RegisterAssemblyTypes(GetAssemblyByName("WebTest.BLL")).Where(a => a.Name.EndsWith("Service")).AsImplementedInterfaces().InstancePerLifetimeScope(); //注册Repository中的对象,Repository中的类要以Repository结尾,否则注册失败
builder.RegisterAssemblyTypes(GetAssemblyByName("WebTest.DAL")).Where(a => a.Name.EndsWith("Repository")).AsImplementedInterfaces().InstancePerLifetimeScope();
}
/// <summary>
/// 根据程序集名称获取程序集
/// </summary>
/// <param name="AssemblyName">程序集名称</param>
/// <returns></returns>
public static System.Reflection.Assembly GetAssemblyByName(string AssemblyName)
{
return System.Reflection.Assembly.Load(AssemblyName);
}
}

 Utils.LongToStringConverter.cs

public class LongToStringConverter : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
Newtonsoft.Json.Linq.JToken jt = Newtonsoft.Json.Linq.JValue.ReadFrom(reader);
return jt.Value<long>();
} public override bool CanConvert(Type objectType)
{
return typeof(System.Int64).Equals(objectType);
} public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, value.ToString());
}
}

  

 

.net core 2.2 EF oracle db first的更多相关文章

  1. Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库

    Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...

  2. Cookies 初识 Dotnetspider EF 6.x、EF Core实现dynamic动态查询和EF Core注入多个上下文实例池你知道有什么问题? EntityFramework Core 运行dotnet ef命令迁移背后本质是什么?(EF Core迁移原理)

    Cookies   1.创建HttpCookies Cookie=new HttpCookies("CookieName");2.添加内容Cookie.Values.Add(&qu ...

  3. Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作

    前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模 ...

  4. 在silverlight中通过WCF连接ORACLE DB数据库(转)

    转自 http://hi.baidu.com/qianlihanse/item/458aa7c8d93d4e0cac092ff4 这不是我的原创,我也是上网学习的~ How to get data f ...

  5. Oracle DB 存储增强

    • 设置Automatic Storage Management (ASM)  快速镜像 再同步 • 使用ASM 首选镜像读取 • 了解可伸缩性和性能增强 • 设置ASM 磁盘组属性 • 使用SYSA ...

  6. goldengate 12c对oracle DB的改进

    1. 现在可使用Oracle Universal Installer,即安装时有图形化界面,同时会自动安装java runtime environment,不过个人认为,还是ZIP安装包方便,解压即用 ...

  7. Oracle DB 使用调度程序自动执行任务

    • 使用调度程序来简化管理任务 • 创建作业.程序和调度 • 监视作业执行 • 使用基于时间或基于事件的调度来执行调度程序作业 • 描述窗口.窗口组.作业类和使用者组的用途 • 使用电子邮件通知 • ...

  8. Oracle DB 管理数据库的空间

    • 描述4 KB 扇区磁盘的概念及使用 • 使用可移动表空间 • 描述可移动表空间的概念 数据库存储 数据库存储 数据库包括物理结构和逻辑结构.由于物理结构和逻辑结构是分开的,因此管理数据的物 理存储 ...

  9. oracle db shutdown immediate–multi Instance

    [oracle@redhat4 ~]$ sqlplus / as sysdba@orcl SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 6 21 ...

随机推荐

  1. Exploit Kit——hacker入侵web,某iframe中将加载RIG EK登录页面,最终下载并执行Monero矿工

    RIG Exploit Kit使用PROPagate注入技术传播Monero Miner from:https://www.4hou.com/technology/12310.html 导语:Fire ...

  2. Educational Codeforces Round 69 (Rated for Div. 2) E. Culture Code

    Educational Codeforces Round 69 (Rated for Div. 2) E. Culture Code 题目链接 题意: 给出\(n\)个俄罗斯套娃,每个套娃都有一个\( ...

  3. js动画---多物体运动

    对于多物体运动和单个物体运动来说,没有特别大的区别,实现原理基本上是一样的,都是通过定时器来实现的,但是多物体有一些地方需要注意,具体哪些需要注意,我将在下面的程序中说明. 首先,我们需要建立几个li ...

  4. Django 的 cbv

    Django 的 cbv 正如我们了解到的,Django 写视图函数有两种写法:cbv 和 fbv.cbv 提倡使用类来写,fbv 使用函数来 写.当然为了代码的重复行,官方更推荐使用 cbv. 写 ...

  5. Mysql insert on update

    数据库 Mysql INSERT INTO table (column_list) VALUES (value_list) ON DUPLICATE KEY UPDATE c1 = v1, c2 = ...

  6. 201671030106 何启芝 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 >>2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 >>实验十四 团队项目评审&课程学习总结 课程学习目 ...

  7. “SkyReach”对“待就业六人组”和“葫芦娃”的Beta产品测试报告

    对"待就业六人组"的Beta产品测试报告 安装成功截图 第一次上手体验感觉如何?能否正常运行? 第一次上手体验,界面简洁明了,简约的风格比较迎合个人的口味:能够正常运行: 该产品具 ...

  8. 非阻塞IO的实现方式

    1.状态轮询: 2.状态订阅: 3.完成回掉:

  9. 基于docker-compose部署 简单nsq 集群

    主要目的是搭建一个测试环境,同时使用了nodejs 客户端sdk nsq 简单了解 nsqd:一个负责接收.排队.转发消息到客户端的守护进程 nsqlookupd:管理拓扑信息并提供最终一致性的发现服 ...

  10. 数列的前$n$项和$S_n$的求法

    相关公式 ①等差数列的\(S_n=\cfrac{n(a_1+a_n)}{2}=na_1+\cfrac{n(n-1)\cdot d}{2}\) ②等比数列的\(S_n=\left\{\begin{arr ...