ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
現代のソフトウェア開発において、効率的なデータ管理は極めて重要である。 シンプルなアプリケーションを構築する場合でも、複雑なエンタープライズ・システムを構築する場合でも、データに効率的にアクセスし、操作し、保存することは基本的な要件です。 エンティティフレームワークコア(EF Core)は、データベースを扱うための便利でオブジェクト指向のアプローチを提供することで、データアクセスを簡素化する強力なツールである。 この記事では、EF Coreの世界に入り込み、その特徴、機能、ベストプラクティスを探ります。 またPDFドキュメントを扱うIronPDFからIronSoftware ソリューションPDF 文書の読み取り、書き込み、管理を行います。 両パッケージを使った実践的な例を作成する。
Entity Framework Coreは、人気のあるEntity Frameworkデータアクセス技術のオープンソース、軽量、拡張可能なバージョンです。 クロスプラットフォームで動作するように設計されており、SQL Server、SQLite、MySQL、PostgreSQL、Azure Cosmos DBなど、さまざまな既存のデータベース・サーバー・プロバイダーをサポートしている。 EF Coreは最新のオブジェクト・データベース・マッパーであり、ORMに従っている。(オブジェクト・リレーショナル・マッピング)このため、開発者は.NETオブジェクトを使ってデータベースを操作することができ、面倒なSQLクエリを手作業で書く必要がなくなる。
エンティティのモデリング: EF Core では、Plain Old CLR Objects を使用してデータモデルを定義できます。(ポコ). これらのエンティティ・クラスはデータベースのテーブルを表し、プロパティはテーブルのカラムにマッピングされます。
LINQ サポート: EF Core は LINQ クエリをシームレスにサポートします。(言語統合クエリ (言語統合クエリ (Language Integrated Query)))開発者は、使い慣れたC#構文を使用して、SQL Serverやその他のデータベースに対して強い型付けのクエリを書くことができます。 これにより、データ照会が直感的になり、実行時エラーの可能性が低くなる。 また、生のSQL文もLINQクエリーと一緒に使うことができる。
データベースの移行: データベースのスキーマ変更を管理することは、特にチーム環境では難しいことです。 EF Coreはデータベースマイグレーション機能を提供することで、このプロセスを簡素化し、開発者がコードファーストのマイグレーションを使用してデータベーススキーマにインクリメンタルな変更を適用できるようにします。
**EF Coreは、遅延ロードとイーガー・ローディングの両方の戦略をサポートしており、開発者はユースケースに応じて、関連データをオンデマンドまたは前もってロードすることにより、パフォーマンスを最適化することができます。
トランザクション管理: トランザクションは、データベース操作中のデータの一貫性と整合性を保証します。 EF Coreでは、開発者はトランザクションを明示的に扱うことができ、データベース操作のグループが成功するか失敗するかを一緒に確認できる。
Entity Framework CoreでSQLiteを使用する基本的な例を作ってみましょう。(EF Core)ASP.NET Core アプリケーションで。 以下の手順を参照してください:
アプリケーションの作成:
必要なパッケージのインストール:
以下のNuGetパッケージをプロジェクトに追加する:
データベースコンテキストの作成:
データベースコンテキストのクラスを定義する(例:DatabaseContext)DbContext を継承しています。
public class DatabaseContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=sample.db");
}
}
public class DatabaseContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=sample.db");
}
}
Public Class DatabaseContext
Inherits DbContext
Protected Overrides Sub OnConfiguring(ByVal optionsBuilder As DbContextOptionsBuilder)
optionsBuilder.UseSqlite("Filename=sample.db")
End Sub
End Class
コンテキストの登録:
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddEntityFrameworkSqlite().AddDbContext(Of DatabaseContext)()
End Sub
起動時にデータベースを作成する:
public Startup(IHostingEnvironment env)
{
using (var client = new DatabaseContext())
{
client.Database.EnsureCreated();
}
}
public Startup(IHostingEnvironment env)
{
using (var client = new DatabaseContext())
{
client.Database.EnsureCreated();
}
}
'INSTANT VB WARNING: The following constructor is declared outside of its associated class:
'ORIGINAL LINE: public Startup(IHostingEnvironment env)
Public Sub New(ByVal env As IHostingEnvironment)
Using client = New DatabaseContext()
client.Database.EnsureCreated()
End Using
End Sub
アプリケーションでSQLiteを使う:
これは基本的な例であり、接続文字列を設定してEF Coreを使用する方法は他にもあることを忘れないでください。 より高度な機能を探求し、特定のニーズに合わせて自由にカスタマイズしてください。!
**EF Core の DbContext インスタンスは、短命であるように設計されており、通常、Web アプリケーションでは、単一のリクエストのライフタイムにスコープされるべきです。
読み取り専用操作には AsNoTracking を使用する: エンティティが変更されることが予想されない読み取り専用操作を行う場合、変更追跡をバイパスしてパフォーマンスを向上させる AsNoTracking メソッドを使用する。
クエリの最適化: 適切なインデックス作成、ページ分割、フィルタリング技術を使用して効率的なクエリを作成し、データベースから取得するデータ量を最小限に抑えます。
N+1クエリ問題を避ける: N+1クエリ問題(コレクション内の各関連エンティティに対してクエリが実行される)に注意すること。 関連するデータを効率的に取得するには、イーガーローディングまたは明示的ローディングを使用します。
IronPDFは.NETプロジェクトでPDFドキュメントの生成、編集、コンテンツの抽出を可能にする強力なC# PDFライブラリです。 以下は主な機能です:
HTMLからPDFに変換:
HTML、CSS、JavaScriptコンテンツをPDF形式に変換します。
画像とコンテンツの変換:
画像をPDFへ、またはPDFから変換します。
編集と操作:
PDFのプロパティ、セキュリティ、権限を設定します。
クロスプラットフォームサポート:
.NET Coreで動作します。(8, 7, 6, 5, および3.1+).NET 標準(2.0以上)、および .NET Framework(4.6.2+).
まず始めに、Visual Studioを使って以下のようにコンソール・アプリケーションを作成します。
プロジェクト名を提供する。
.NETクロスプラットフォーム版を提供する。
Microsoft.EntityFrameworkCore パッケージをインストールします。
Microsoft.EntityFrameworkCore.SqlLiteパッケージをインストールします。
IronPDFパッケージをインストールします。
Program.csに以下のコードを追加する。
using Microsoft.EntityFrameworkCore;
using System.Xml.Linq;
namespace CodeSample
{
public class Program
{
public static void Main()
{
Console.WriteLine("-------------Demo EF core and IronPDF--------------");
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
var content = "<h1>Demo EF core and IronPDF</h1>";
content += "<h2>Add Students</h2>";
// Add Students to Database
using (var client = new DatabaseContext())
{
client.Database.EnsureCreated(); // create table
client.Students.ExecuteDelete(); // ensure clean table
var stud1 = new Student { StudentName = "Bill", DateOfBirth = new DateTime(1990, 12, 01), Height = 5.45M, Weight = 56, Grade = 10 };
content = AddStudent(content, stud1);
var stud2 = new Student { StudentName = "Mike", DateOfBirth = new DateTime(1992, 12, 06), Height = 4.45M, Weight = 34, Grade = 8 };
content = AddStudent(content, stud2);
var stud3 = new Student { StudentName = "Peter", DateOfBirth = new DateTime(1990, 12, 03), Height = 5.0M, Weight = 50, Grade = 10 };
content = AddStudent(content, stud3);
var stud4 = new Student { StudentName = "Bob", DateOfBirth = new DateTime(1990, 12, 09), Height = 4.56M, Weight = 56, Grade = 10 };
content = AddStudent(content, stud4);
var stud5 = new Student { StudentName = "Harry", DateOfBirth = new DateTime(1990, 12, 21), Height = 5.6M, Weight = 56, Grade = 10 };
content = AddStudent(content, stud5);
var stud6 = new Student { StudentName = "Charle", DateOfBirth = new DateTime(1993, 12, 11), Height = 5.5M, Weight = 56, Grade = 7 };
content = AddStudent(content, stud6);
client.Students.Add(stud1);
client.Students.Add(stud2);
client.Students.Add(stud3);
client.Students.Add(stud4);
client.Students.Add(stud5);
client.Students.Add(stud6);
client.SaveChanges();
}
content += "<h2>Display Students in Database</h2>";
// Display Students in Database
using (var client = new DatabaseContext())
{
Console.WriteLine($"Display Stduents in Database");
var students = client.Students.ToList();
foreach (var student in students)
{
Console.WriteLine($"Name= {student.StudentName},ID={student.StudentID},G={student.Grade},W={student.Weight},H={student.Height}");
content = AddStudent(content, student);
}
}
var pdf = renderer.RenderHtmlAsPdf(content);
// Export to a file or Stream
pdf.SaveAs("AwesomeEfCoreAndIronPdf.pdf");
}
private static string AddStudent(string content, Student student)
{
content += $"<p>Name = {student.StudentName},ID={student.StudentID},G={student.Grade},W={student.Weight},H={student.Height}</p>";
return content;
}
}
public class DatabaseContext : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=IronPdfDemo.db");
}
}
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public DateTime? DateOfBirth { get; set; }
public decimal Height { get; set; }
public float Weight { get; set; }
public int Grade { get; set; }
}
}
using Microsoft.EntityFrameworkCore;
using System.Xml.Linq;
namespace CodeSample
{
public class Program
{
public static void Main()
{
Console.WriteLine("-------------Demo EF core and IronPDF--------------");
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
var content = "<h1>Demo EF core and IronPDF</h1>";
content += "<h2>Add Students</h2>";
// Add Students to Database
using (var client = new DatabaseContext())
{
client.Database.EnsureCreated(); // create table
client.Students.ExecuteDelete(); // ensure clean table
var stud1 = new Student { StudentName = "Bill", DateOfBirth = new DateTime(1990, 12, 01), Height = 5.45M, Weight = 56, Grade = 10 };
content = AddStudent(content, stud1);
var stud2 = new Student { StudentName = "Mike", DateOfBirth = new DateTime(1992, 12, 06), Height = 4.45M, Weight = 34, Grade = 8 };
content = AddStudent(content, stud2);
var stud3 = new Student { StudentName = "Peter", DateOfBirth = new DateTime(1990, 12, 03), Height = 5.0M, Weight = 50, Grade = 10 };
content = AddStudent(content, stud3);
var stud4 = new Student { StudentName = "Bob", DateOfBirth = new DateTime(1990, 12, 09), Height = 4.56M, Weight = 56, Grade = 10 };
content = AddStudent(content, stud4);
var stud5 = new Student { StudentName = "Harry", DateOfBirth = new DateTime(1990, 12, 21), Height = 5.6M, Weight = 56, Grade = 10 };
content = AddStudent(content, stud5);
var stud6 = new Student { StudentName = "Charle", DateOfBirth = new DateTime(1993, 12, 11), Height = 5.5M, Weight = 56, Grade = 7 };
content = AddStudent(content, stud6);
client.Students.Add(stud1);
client.Students.Add(stud2);
client.Students.Add(stud3);
client.Students.Add(stud4);
client.Students.Add(stud5);
client.Students.Add(stud6);
client.SaveChanges();
}
content += "<h2>Display Students in Database</h2>";
// Display Students in Database
using (var client = new DatabaseContext())
{
Console.WriteLine($"Display Stduents in Database");
var students = client.Students.ToList();
foreach (var student in students)
{
Console.WriteLine($"Name= {student.StudentName},ID={student.StudentID},G={student.Grade},W={student.Weight},H={student.Height}");
content = AddStudent(content, student);
}
}
var pdf = renderer.RenderHtmlAsPdf(content);
// Export to a file or Stream
pdf.SaveAs("AwesomeEfCoreAndIronPdf.pdf");
}
private static string AddStudent(string content, Student student)
{
content += $"<p>Name = {student.StudentName},ID={student.StudentID},G={student.Grade},W={student.Weight},H={student.Height}</p>";
return content;
}
}
public class DatabaseContext : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=IronPdfDemo.db");
}
}
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public DateTime? DateOfBirth { get; set; }
public decimal Height { get; set; }
public float Weight { get; set; }
public int Grade { get; set; }
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
レンダラーとコンテンツのセットアップ:。
データベースのコンテキストと生徒の追加:.
**出場学生
そして、このコードはデータベース内の生徒を表示する。
client.Students.ToListを使用してすべての学生を取得します。();.
**PDFへのレンダリング
ChromePdfRenderer がインスタンス化されます。
IronPDFパッケージの実行とPDF生成にはライセンスが必要です。 パッケージにアクセスする前に、アプリケーションの開始位置に以下のコードを追加する。
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
トライアルライセンスはIronPDF ライセンスページ.
C#のEntity Framework Coreは、LINQサポート、データベース移行、トランザクション管理などの機能を提供し、データベースと対話するための堅牢で直感的な方法を提供します。 ベストプラクティスに従い、その強力な機能を活用することで、開発者はスケーラブルで保守性の高いアプリケーションを簡単に構築することができる。 経験豊富な開発者であれ、これから始めようとしている開発者であれ、EF CoreはC#アプリケーションで最新のデータアクセスを行うためのツールキットとして持っておくべき貴重なツールです。 一方、IronPDFはアプリケーション内でPDFドキュメントを作成、操作、レンダリングするための.NETライブラリです。 EF Coreと一緒に使用して、HTMLコンテンツを変換できます。(画像を含む)をPDFファイルに変換してください。
9つの .NET API製品 オフィス文書用