사용 NCache EF Core에서 Oracle 사용

안녕하세요 여러분, 저는 Sean입니다. 오늘은 통합하는 방법을 보여 드리겠습니다. NCache 당신의 기존에 Entity Framework 핵심 애플리케이션 Oracle 데이터베이스로 구성됩니다. 우리는 이 데모를 위해 이미 구성한 샘플 애플리케이션을 사용하여 작업하는 실습 데모로 이 작업을 수행할 것입니다. NCache 그것에. 그래서 그것은 우리가 준비한 꽤 흥미로운 것들입니다. 우리가 어떻게 할 것인지 보여드리겠습니다.

샘플 EF 핵심 애플리케이션

따라서 여기서 가장 먼저 해야 할 일은 샘플 애플리케이션 자체입니다. 여기 보시다시피 샘플 애플리케이션이 있고 여기에서 일부 주문, 고객 및 제품을 가져오고 있습니다. 여기에서 보여드릴 수 있는 Oracle 데이터베이스와 함께 작동하도록 구성했습니다. 컨텍스트로 이동하면 여기에 Oracle 데이터베이스를 사용하기 위한 UseOracle 메서드가 있음을 알 수 있습니다.

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
   optionsBuilder.UseOracle("Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 20.200.20.112)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = NorthWindDB)));User Id=SYS;Password=MyPassword;DBA Privilege=SYSDBA;");
}

따라서 실제로 이 프로그램을 실행하기 전에 데이터베이스로 이동하여 우리가 작업 중인 내용을 보여드리겠습니다. 그래서 저는 Oracle의 Northwind 데이터베이스로 작업하고 있습니다. 그리고 테이블이 많기 때문에 여기서 작업 중인 테이블을 열어서 볼 수 있도록 했습니다. 첫 번째는 ORDERS이며, 여기서 작업할 주문에 대한 이러한 속성을 볼 수 있습니다. 그럼, 당사의 PRODUCTS를 살펴보겠습니다. 따라서 이는 애플리케이션에서 가져오거나 가져올 제품 속성입니다. 세 번째 테이블은 CUSTOMERS이며 바로 여기에서 고객의 속성을 볼 수 있습니다. 그리고 이것이 우리가 작업하게 될 모든 테이블입니다.

Northwind 데이터베이스

이제 실제로 이 테이블을 쿼리하고 내부에 무엇이 있는지 살펴보겠습니다. Northwind 데이터베이스에 77개의 제품이 있고 이 제품이 모두 여기에 있다는 것을 알 수 있습니다. 그래서 그것은 모두 괜찮고 좋습니다. 이제 CUSTOMERS, Customers를 살펴보고 입력한 후 아래로 끝까지 스크롤하면 완벽합니다! 따라서 Northwind 데이터베이스에 89명의 고객이 있고 눈앞에 보이는 것처럼 모든 고객이 바로 여기에 있다는 것을 알 수 있습니다.

이제 주문 내용을 살펴보겠습니다. 이제 주문이 많을 것입니다. 맨 아래로 스크롤해 보겠습니다. 완벽합니다! 따라서 데이터베이스에 830개의 주문이 있음을 알 수 있습니다. 주문량이 너무 많아서 여기에서 모든 주문을 볼 수 있습니다. 따라서 우리는 애플리케이션의 몇 가지 기준을 통해 일부 가져오기 작업을 수행할 예정이며 지금부터 이를 살펴보겠습니다.

이제 애플리케이션이 실행되었으므로 완벽하게 볼 수 있습니다. 이제 여기 위로 스크롤하여 ID 25에서 50 사이의 제품을 가져올 수 있습니다. 따라서 26개의 제품이 있습니다. 영국 출신 고객이므로 10280명의 고객이 있습니다. 10300에서 21 사이의 주문이므로 XNUMX개의 주문이 있습니다. 완벽합니다!

DB에서 가져온 주문
 

NCache EF Core 설정

이제 샘플이 작동하고 있음을 알았으므로 구성으로 넘어갈 수 있습니다. NCache Entity Framework Core 애플리케이션에서. 따라서 작동하도록 애플리케이션을 구성합니다. NCache 이 데모에서 수행할 작업은 다섯 단계만큼 간단합니다.

  1. 설치 NCache EF 코어 너겟 패키지
  2. 추가 NCache EntityFrameworkCore 네임스페이스
  3. DbContext에서 캐시 구성 지정
  4. 모델을 직렬화 가능하게 만들기
  5. NCache EF 핵심 확장 방법
 

설치 NCache EF 코어 너겟 패키지

그럼 여기서 첫 번째 단계부터 시작하겠습니다. NCache Entity Framework Core NuGet 패키지를 애플리케이션에 추가합니다. 따라서 애플리케이션에서 NuGet 패키지로 이동하면 EntityFrameworkCore를 찾습니다.NCache 바로 여기에 있는 NuGet 패키지입니다. 내 응용 프로그램에 이것을 설치했으므로 여기에서 볼 수 있습니다. 그리고 저는 버전 5.3.2.1을 실행하고 있습니다. NCache 버전 5.3 SP2. 그럼 완벽해요. 이제 이 탭을 닫고 다음 단계로 넘어가겠습니다.

 

추가 NCache EntityFrameworkCore 네임스페이스

따라서 다음 단계는 NCache Entity Framework Core 네임스페이스를 애플리케이션에 추가합니다. 이제 코드를 다시 열고 여기 프로그램으로 들어가 보겠습니다. 그리고 다음을 추가하겠습니다.

using Alachisoft.NCache.EntityFrameworkCore

완벽한! 따라서 이것을 저장하고 모델 컨텍스트로 이동하여 여기에 붙여넣겠습니다. 완벽합니다! 이제 완료되었으므로 데이터베이스 컨텍스트에서 캐시 구성을 지정하는 다음 단계로 넘어갈 수 있습니다.

 

데이터베이스 컨텍스트에서 캐시 구성 지정

따라서 구성 방법으로 아래로 스크롤하고 작업할 캐시의 이름을 추가한 다음 NCache 구성. 그러면 이것이 나의 'efcoreoraclecache'가 될 것입니다. 완벽합니다! 그리고 나는 NCache구성.구성 Oracle이 될 종속성 유형과 함께 캐시 이름 — 완벽합니다! 그리고 이것이 제가 여기서 해야 할 전부입니다.

...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
   string cache = "efcoreoraclecache";

   NCacheConfiguration.Configure(cache, DependencyType.Oracle);

   optionsBuilder.UseOracle("Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 20.200.20.112)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = NorthWindDB)));User Id=SYS;Password=MyPassword;DBA Privilege=SYSDBA;");
}
...

이제 우리가 작업할 캐시를 살펴보겠습니다. 따라서 여기 두 데모 머신에 EFCoreOracleCache가 구성되어 있는 것을 볼 수 있습니다. 그리고 이 캐시의 세부 사항을 살펴보겠습니다. 따라서 여기에서 이 캐시를 모니터링하려면 이 모니터 버튼을 클릭하면 됩니다. 캐시 상태를 보여주는 모니터로 이동하면 캐시가 양호하고 깨끗하며 작업할 수 있는 정상적인 캐시가 있음을 알 수 있습니다.

NCache 모니터

세부 정보로 돌아가서 통계를 클릭하면 캐시 통계를 보여주는 이 페이지로 이동하게 됩니다. 이제 모니터로 돌아가면 애플리케이션으로 돌아가서 다음 단계를 엽니다.

NCache 통계
 

모델을 직렬화 가능하게 만들기

따라서 다음 단계는 모델을 직렬화할 수 있도록 만드는 것입니다. 완벽한. 이제 고객 모델로 이동하겠습니다. 그래서 그것은 거기에 있을 것입니다. 완벽한. 그리고 그냥 추가하겠습니다. [직렬화 가능] 여기. 완벽한. 이제 완료되었으므로 내 주문으로 넘어갈 수 있습니다. 그러면 이미 다음과 같이 표시되어 있는 것을 볼 수 있습니다. [직렬화 가능]. 그리고 내 제품은 이미 다음과 같이 표시되어 있습니다. [직렬화 가능]. 따라서 내 모든 모델은 직렬화 가능하므로 여기까지 가도 좋습니다. 이제 다음 단계로 넘어갈 수 있습니다.

 

NCache EF 핵심 확장 방법

다음 단계는 NCache Entity Framework Core 확장 방법 우리의 응용 프로그램 내에서. 우리가 사용하기로 선택한 확장 방법은 실제로 캐싱하는 데이터 유형에 따라 달라지기 때문에 여기서는 잠시 잠시 멈추겠습니다.

따라서 캐시할 수 있는 데이터에는 두 가지 유형이 있습니다. 첫 번째 유형은 트랜잭션이고 두 번째 유형은 참조입니다. 이러한 유형이 무엇이고 어떻게 처리해야 하는지에 대해서는 곧 살펴보겠습니다. 그럼 첫 번째 이야기를 해보겠습니다. 완벽한.

트랜잭션 데이터 처리

따라서 처리할 수 있는 첫 번째 데이터 유형은 트랜잭션 데이터입니다. 이제 트랜잭션 데이터는 읽기 집약적 사용 사례와 쓰기 집약적 사용 사례가 있는 데이터입니다. 이에 대한 좋은 예는 매일 항공편이 너무 많고 해당 데이터가 매일 데이터베이스에 기록되고 매일 데이터베이스에서 가져오는 항공편 데이터입니다. 따라서 이는 해당 데이터가 트랜잭션이 될 수 있는 자격을 갖춘 읽기 및 쓰기 집약적 사용 사례입니다. 우리의 경우 유사한 사용 사례를 주문에 매핑할 수 있습니다. 따라서 우리는 주문을 거래 데이터로 간주할 수 있습니다. 따라서 Entity Framework Core에서 트랜잭션 데이터를 처리하는 방법에 대해 이야기할 때 NCache, 우리는 캐시에서() 확장 방법.

캐시에서()

이제 기존 쿼리보다 먼저 이 확장 메서드를 연결하면 처음 실행할 때 표준 쿼리처럼 실행됩니다. 귀하의 애플리케이션은 데이터베이스로 이동하여 거기에서 엔터티를 가져옵니다. 그러나 이번에는 애플리케이션이 이를 클러스터 캐시에 캐시하므로 다음에 애플리케이션이 해당 엔터티를 가져오려고 시도할 때 백엔드 데이터베이스까지 이동하지 않고 대신 클러스터된 캐시의 해당 엔터티를 애플리케이션으로 다시 가져옵니다. 그럼 이 방법이 어떻게 작동하는지 살펴보겠습니다.

따라서 제가 신청서를 제출하면 여기에서 주문을 가져옵니다. 그래서 몇 가지 주문 캐싱 옵션을 추가하겠습니다. 따라서 여기에 order_caching_options를 추가하겠습니다. 이는 'new CachingOptions'가 됩니다. 따라서 여기에 내 매장 유형을 지정하여 내 모든 주문에 대한 단일 컬렉션을 가져오고 싶다고 말하겠습니다. StoreAs.Collection을 만든 다음 이를 캐시에 채우세요. 또한 이 데이터에 10분의 절대 만료를 추가하겠습니다. 왜냐하면 트랜잭션 데이터를 처리할 때 이 데이터가 자주 변경되므로 가능한 한 정기적으로 새로 고치고 싶기 때문입니다. 따라서 이 만료 시간을 10분으로 설정하여 10분 후에 이 데이터 세트가 캐시 내에서 새로 고쳐지도록 하겠습니다. 이제 .FromCache() 확장 메서드를 추가하고 내 order_caching_options를 내부에 추가하면 완벽합니다. 이것은 절대적으로 완벽하며 이것이 우리가 해야 할 전부입니다.

using OracleEFCore.Models;
using Alachisoft.NCache.EntityFrameworkCore;

namespace OracleEFCore
{
    internal class Program
    {
        static void Main(string[] args)
        {
            using (var context = new Models.ModelContext())
            {
                //-----Orders----- 
                var order_caching_options = new CachingOptions()
                {
                    StoreAs = StoreAs.Collection
                };
                order_caching_options.SetAbsoluteExpiration(DateTime.Now.AddMinutes(10));

                int upper_orderid = 10300;
                int lower_orderid = 10280;

                var order_resultset = context.Orders
					  .Where(o => o.Orderid >= lower_orderid && o.Orderid <= upper_orderid)
					  .FromCache(order_caching_options)
					  .ToList();
					  ...

이제 샘플을 실행하고 결과를 살펴보겠습니다. 완벽한. 샘플이 실행되었습니다. 여기에는 변경 사항이 없으므로 여기를 닫으면 됩니다. 이제 캐시에 있는 요청을 살펴볼 수 있습니다. 그리고 이 개수도 증가한 것을 볼 수 있습니다. 이제 이 캐시에 대한 캐시 키를 내보내고 방금 클러스터형 캐시에 추가한 컬렉션을 살펴보겠습니다. 완벽한. 그러면 캐시에 추가된 이 컬렉션을 볼 수 있습니다. 정말 대단해요.

캐시 키

그러나 이제 단일 컬렉션을 캐시에 넣지 않고 대신 각 주문을 별도의 엔터티로 원한다고 가정해 보겠습니다. 글쎄, 그런 경우에는 상점을 별도의 엔터티 유형으로 지정할 수 있습니다.

//-----Orders----- 
var order_caching_options = new CachingOptions()
{
   StoreAs = StoreAs.SeparateEntities
};

이제 이 애플리케이션을 다시 실행하면 모든 주문이 별도의 엔터티로 캐시에 저장됩니다. 이제 애플리케이션이 실행되었으므로 닫아 보겠습니다. 개수가 완전히 증가한 것을 볼 수 있으며 수행된 추가 사항과 요청을 볼 수 있습니다. 통계로 가면 7개와 15개를 볼 수 있습니다. 완벽해요.

NCache 모니터
NCache 통계

이제 캐시 키를 내보내고 캐시 내에 있는 키를 살펴보겠습니다. 완벽한. 따라서 캐시에는 22개의 키 또는 항목이 있으며 모든 주문은 별도로 캐시됩니다. 이는 'FromCache()' 확장 메서드가 사용되는 방식을 거의 요약합니다.

캐시 키

참조 데이터 처리

이제 참조 데이터를 처리하는 방법에 대해 이야기해 보겠습니다. 따라서 참조 데이터는 읽기 집약적 사용 사례가 있지만 트랜잭션 데이터만큼 자주 업데이트되지 않는 데이터입니다. 이에 대한 좋은 예는 제품 카탈로그입니다. 따라서 재고가 있는 제품이나 제품 카탈로그가 있는 경우 해당 카탈로그를 매우 자주 업데이트하지 않습니다. 귀하의 제품은 한 달에 한두 번씩 변경될 수 있습니다. 따라서 데이터베이스에서 해당 데이터를 읽기만 하고 데이터베이스 내의 해당 데이터를 매우 자주 업데이트하지 않을 가능성이 높습니다. 따라서 해당 데이터를 데이터베이스에서 클러스터형 캐시로 가져온 다음 데이터베이스로 이동하는 대신 고속 인메모리 클러스터형 캐시 또는 데이터 저장소에서 해당 데이터를 읽는 것이 합리적입니다. 그리고 이는 귀하의 애플리케이션에 고성능과 확장성을 제공할 것입니다. 인메모리 분산 캐싱.

따라서 참조 데이터로 작업할 때 가장 먼저 사용하는 방법은 로드인투캐시() 방법. 이제 캐시로 로드 메서드는 Entity Framework Core에서 실행한 쿼리 결과를 가져와 해당 결과를 클러스터 캐시에 캐시합니다. 이제 데이터가 업데이트될 것으로 예상되는 간격으로 캐시로 로드 방법이 실행되도록 설정할 수 있습니다.

로드인투캐시()

예를 들어 매주 업데이트되는 제품 카탈로그를 생각해 보세요. 캐시의 데이터를 계속 새로 고치고 캐시 내에 항상 새로운 데이터가 있도록 이 방법을 매주 실행하도록 설정할 수 있습니다.

이제 캐시 내에 전체 데이터 세트가 있으므로 세 번째 확장 방법을 살펴보겠습니다. FromCacheOnly() 확장 방법. 이제, FromCacheOnly() 확장 방법은 데이터를 가져오기 위해 백엔드 데이터베이스로 이동하지 않고 애플리케이션에서 클러스터 캐시로만 이동할 수 있도록 하는 정말 멋진 확장 방법입니다. 당신이 사용하는 동안에는 결코 백업된 데이터베이스로 이동하지 않을 것입니다. FromCacheOnly() 확장 방법.

로드인투캐시()

따라서 이 방법을 병행해서 사용하면 로드인투캐시() 방법을 사용하면 클러스터 캐시를 최신 상태로 유지하고 데이터베이스와 동기화하며 클러스터 캐시 내에서만 데이터를 가져오는 매우 강력한 도구 세트를 갖게 됩니다.

이제 이러한 방법을 어떻게 사용하는지 살펴보겠습니다. 따라서 이러한 방법으로 작업할 때 가장 먼저 해야 할 일은 여기에서 이러한 모델에 대한 쿼리 인덱스를 만드는 것입니다. 고객에 들어가면 이를 수행하는 한 가지 방법은 [쿼리인덱싱 가능] 여기 '고객' 위에 태그를 추가하세요. 따라서 여기서 'QueryIndexable[]' 태그를 볼 수 있으며 이는 이 라이브러리를 가져옵니다. 하지만 제 경우는 굳이 이렇게까지 할 필요는 없어서 그냥 코멘트로 달겠습니다. 그 이유는 클러스터형 캐시와 세부 정보로 이동하여 여기 있는 쿼리 인덱스 탭까지 아래로 스크롤하면 모든 쿼리 인덱스가 이미 캐시에 추가되었음을 알 수 있기 때문입니다. 따라서 이를 추가했으므로 동적으로 정의할 필요가 없습니다.

쿼리 인덱스

이제 쿼리 인덱스가 준비되었으므로 여기에 모든 제품을 데이터베이스에서 캐시로 로드하는 코드 조각이 있습니다. 따라서 저는 이 코드의 주석 처리를 제거하겠습니다. 완벽한!

// ------------------------Load ALL Products Into Cache------------------------
...
	var products_caching_option = new CachingOptions
	{
	   StoreAs = StoreAs.SeparateEntities
	};

	products_caching_option.SetAbsoluteExpiration(DateTime.Now.AddDays(10));

	var all_products = (from products in context.Products
					   select products)
					   .LoadIntoCache(products_caching_option)
					   .ToList();

	Console.WriteLine($"\n\nAll Products Loaded into cache : {all_products.Count}\n\n");

	all_products.ForEach(product =>
	{
	   Console.WriteLine(String.Format("{0,-25}  {1,-40}  {2,-10}", $"{product.Productid}", $"{product.Productname}", $"{product.Unitprice}"));
	});
...

그리고 이 코드가 하는 일은 내 제품을 별도의 엔터티에 넣고 10일 만료로 추가하도록 설정하는 것뿐입니다. 그러면 이 로드인투캐시() 방법은 제품을 캐시에 로드하는 것입니다. 이제 이것을 실행하고 가져오는 결과를 살펴보겠습니다. 완벽한! 이제 여기 위로 스크롤하면 여기로 이동합니다! 우리는 모든 제품(77개 제품)을 캐시에 로드했음을 알 수 있습니다.

로드인투캐시()

그런 다음 캐시에 들어온 요청, 수행된 추가, 그리고 엄청나게 증가한 개수를 볼 수 있습니다. 통계를 열면 한 파티션에 59개 항목이 있고 다른 파티션에 41개 항목이 있음을 알 수 있습니다.

NCache 통계

이제 캐시 키를 내보내고 보유한 데이터를 살펴보겠습니다. 완벽한! 따라서 캐시에는 100개의 키가 있고 모든 제품이 캐시로 들어왔습니다. 완벽한! 이제 전체 데이터 세트가 포함되었으므로 이 메서드를 다시 실행할 필요가 없습니다. 그냥 가서 이 댓글을 달겠습니다.

캐시 수

이제 우리는 FromCacheOnly() 이전에 실행했던 제품 쿼리에 대한 확장 메서드입니다. 그래서 '만 추가합니다. FromCacheOnly(). 완벽한! 이제 샘플을 실행하고 이 가져오기 결과를 살펴보겠습니다. 완벽한! 이제 캐싱 없이 이 애플리케이션을 실행했을 때 얻은 것과 동일한 26개의 결과가 나왔습니다. 이는 완전한 결과를 의미하며, 수행된 가져오기와 캐시에서 받은 요청을 볼 수 있습니다.

FromCacheOnly()
 

EF 핵심 특정 NCache API

그리고 그것은 당신이 FromCacheOnly() 와 더불어 로드인투캐시() 확장 방법. 그리고 이는 EF Core 관련 내용으로 이어집니다. NCache 사용할 수 있는 API입니다. 예를 들어, 확장 메서드를 사용하고 싶지 않고 엔터티를 생성하고 이를 컨텍스트에 유지한 다음 캐시에 푸시하는 독립 엔터티로 작업하고 싶다고 가정해 보겠습니다. 잘, NCache 당신이 그것을 할 수 있습니다 EF 코어 관련 NCache API. 따라서 이러한 작업 방식은 애플리케이션 내의 EF Core 컨텍스트에서 캐시 컨텍스트를 가져오는 것입니다. 그런 다음 해당 캐시 컨텍스트가 있으면 해당 캐시 컨텍스트를 사용하여 캐시에 엔터티를 삽입하거나 캐시에서 엔터티를 제거할 수 있습니다.

이제 이는 제공되는 API와 혼동되어서는 안 됩니다. NCache SDK. 이는 Entity Framework Core에만 해당되며 Entity Framework Core에서 예상되는 방식으로 작동합니다. 따라서 삽입 데이터에서 out 문자열 캐시 키를 사용하여 고객을 삽입할 것임을 알 수 있습니다. 이는 Entity Framework Core API에서 제공하는 캐시 키입니다.

이제 이것이 어떻게 작동하는지 살펴보고 항목이나 엔터티가 캐시에 어떻게 지속되는지 확인할 수 있습니다. 따라서 여기에서 아래로 스크롤하면 캐시 핸들을 사용하여 캐시에 고객을 추가할 수 있음을 알 수 있습니다. 그래서 저는 여기서 이 코드의 주석 처리를 제거하겠습니다. 완벽한!

//-------------------Add Customer Using Cache Handle-------------------
...
	Cache cache = context.GetCache();


	var cust = new Customer
	{
	   Customerid = "HANIH",
	   Contactname = "Hanih Moos",
	   Contacttitle = "Sales Representative",
	   Companyname = "Blauer See Delikatessen",


	};

	var options = new CachingOptions
	{
	   StoreAs = StoreAs.SeparateEntities
	};

	options.SetAbsoluteExpiration(DateTime.Now.AddMinutes(10));

	context.Customers.Add(cust);
	context.SaveChanges(true);

	cache.Insert(cust, out string cacheKey, options);
	Console.WriteLine($"\n\nCustomer ID: {cust.Customerid} -> Added to Cache");

이제 단순히 캐시 컨텍스트를 가져오는 중이라는 것을 알 수 있다면 여기서 이 고객을 생성하는 것입니다. 여기에 만료 시간이 10분인 별도의 엔터티로 저장하고 싶다고 말합니다. 나는 이것을 내 컨텍스트 내에서 유지하고 변경 사항을 저장한 다음 여기에 이 ​​캐시 삽입을 수행합니다. 그런 다음 이 고객을 캐시에 추가했음을 인쇄합니다.

이제 코드를 실행하고 이것이 어떻게 작동하는지 살펴보겠습니다. 완벽한! 그러면 고객이 캐시에 추가된 것을 확인할 수 있습니다. 이만 닫겠습니다. 우리는 수행된 1에 대한 추가와 카운트에서 이러한 범프를 볼 수 있습니다. 그럼 통계로 가보겠습니다. 우리는 거기에 갈! 따라서 우리는 41을 볼 수 있고 개수는 59에서 60으로 사라졌습니다.

NCache 통계

이제 캐시 키를 내보내 보겠습니다. 완벽한! 자, 이제 갑시다! 캐시에 추가된 고객을 볼 수 있고, API가 이 항목에 캐시 키를 할당한 것을 볼 수 있습니다. 추가하기 위해 키를 지정할 필요가 없었습니다. 그럼 완벽해요!

고객이 캐시에 추가됨

이제 이 문제를 정리하고 캐시에 넣은 이 고객을 실제로 제거해 보겠습니다. 이제 이 코드를 한 번 더 주석 처리하겠습니다. 나는 그것을 주석 처리하고 아래로 스크롤하여 캐시 핸들을 사용하여 고객을 제거하겠습니다. 그래서 여기에 그 코드가 있습니다. 그래서 저는 그것을 모두 선택하고 바로 여기서 주석 처리를 제거하겠습니다.

//-------------------Remove Customer Using Cache Handle-------------------
...
	Cache cache = context.GetCache();

	Customer customerToRemove = context.Customers.Find("HANIH");

	if (customerToRemove != null)
	{
		context.Customers.Remove(customerToRemove);
		context.SaveChanges(true);
		cache.Remove(customerToRemove);
		Console.WriteLine($"\n\nCustomer ID: {customerToRemove.Customerid} -> Removed from Cache");
	}
	else
	{
		Console.WriteLine("\n\ncould not find the customer within the cache");
	}

그리고 이 코드가 하는 일은 다시 컨텍스트에서 캐시를 가져오고 컨텍스트 내에서 해당 고객을 찾는 것입니다. 그리고 해당 고객이 실제로 발견되면 컨텍스트에서 고객을 제거하고 변경 사항을 저장한 다음 이 캐시.Remove()를 수행하여 고객을 제거한 다음 고객임을 인쇄합니다. 그랬어요. 그렇지 않고 고객을 찾을 수 없으면 캐시 내에서 고객을 찾을 수 없다고 알려줄 것입니다.

이제 이것을 저장하고 이 애플리케이션을 실행하여 무슨 일이 일어나는지 살펴보겠습니다. 완벽한! 그래서 고객을 찾아서 캐시에서 제거했습니다. 엄청난!

고객이 캐시에서 제거됨

이제 이것을 닫고 개수를 살펴보겠습니다. 60에서 59로 감소한 것을 볼 수 있습니다. 또한 통계에 따르면 개수가 60에서 59로 감소한 것으로 나타났습니다. 이제 캐시 키를 내보내겠습니다. 이제 100개의 키가 표시됩니다. 완벽한! 따라서 이전에 추가한 고객이 카운트에 다시 100으로 돌아간 것을 볼 수 없습니다. 이로써 이 데모가 거의 끝났습니다. 시청해 주셔서 정말 감사합니다.

다음 단계

다운로드 NCache

이제 다음 단계의 일환으로 할 수 있는 일은 다운로드하려는 경우입니다. NCache, 그러면 30일 무료 평가판을 받을 수 있으며, 이를 통해 완벽하게 작동하는 제품을 얻을 수 있습니다. 다음으로 이동하면 그렇게 할 수 있습니다. alachisoft.com 여기로 이동한 다음 다운로드 섹션을 참조하세요. 여기에는 .NET 버전의 요구 사항에 따라 다운로드할 수 있는 제품이 있습니다.

놀이터를 사용해보십시오

여러분의 시간과 재능으로 시도해보십시오. NCache 운동장 30분 동안. 이는 코드를 가지고 놀면서 샘플이 어떻게 실행되는지 살펴보고 제품에 대한 전반적인 느낌을 얻을 수 있는 일종의 완전한 샌드박스 세션을 제공합니다.

맞춤형 예약 NCache Rescale과 함께 비즈니스를 가속화하는 방법에 대해 알아보세요.

마지막으로 다음을 수행할 수도 있습니다. 맞춤형 일정을 계획하다 NCache 데모 여기서 우리는 귀하에게 1시간 분량의 덤프를 제공할 것입니다. NCache 풍모 그리고 그것이 얼마나 잘 작동하는지. 또한 사용 사례 종류를 귀하의 문제점에 매핑하고 캐싱이 귀하의 환경에서 얼마나 잘 작동하는지 확인할 수 있습니다. 그럼 그냥 작성하시면 됩니다 여기 이 양식 그리고 요청을 제출하세요. 우리는 그것을 얻을 것이라고 확신할 수 있으며 그에 따라 데모 일정을 계획할 것입니다.

이것으로 이 데모가 거의 끝났습니다. 시청해 주셔서 정말 감사합니다. 즐거운 하루 보내세요. 안녕히 가세요.

다음에 무엇을할지?

© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.