.NET 5とEntityFrameworkCore5を使いオラクルデータベースからデータを取得する方法

この記事は公開から3年以上経過しています。

C#で.NET 5以降とEntityFrameworkCore 5を使い、Oracleから複合主キーのテーブルを読み込む方法。


サンプルソースコード

※事前にNuGetのOracle.EntityFrameworkCoreパッケージを追加しておく必要があります。

C#

using Microsoft.EntityFrameworkCore;
using System;

namespace net5ef5test
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            using (var dbc = new SomeDBContext())
            {
                //
                foreach (var datum in dbc.Data)
                {
                    Console.WriteLine($"PK1={datum.PK1}, PK2={datum.PK2}, VAL={datum.VAL}");
                }
            }
        }
    }

    // エンティティ型クラス
    internal class SomeTable
    {
        // キー列1
        public string PK1 { get; set; }

        // キー列2
        public string PK2 { get; set; }

        // 値列
        public string VAL { get; set; }
    }

    // DbContext
    internal class SomeDBContext : DbContext
    {
        // 結果セット
        public DbSet<SomeTable> Data { get; set; }

        // DbContext::OnConfiguring()
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            var conStr =
                "user id=ユーザーID;password=パスワード;data source=" +
                 "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
                 "(HOST=ホスト名)(PORT=ポート番号))(CONNECT_DATA=" +
                 "(SERVICE_NAME=サービス名)))";
            optionsBuilder.UseOracle(conStr);
        }

        // DbContext::OnModelCreating
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // 複合主キーを使いモデルを構築
            modelBuilder.Entity<SomeTable>().ToTable("SOME_TABLE").HasKey(o => new { o.PK1, o.PK2 });
        }
    }
}


以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする