|
|
|
@ -2,6 +2,7 @@ using System;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using Shouldly;
|
|
|
|
|
using Volo.Abp.Data;
|
|
|
|
|
using Volo.Abp.Domain.Repositories;
|
|
|
|
@ -9,6 +10,7 @@ using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
|
|
|
|
|
using Volo.Abp.TestApp.Domain;
|
|
|
|
|
using Volo.Abp.TestApp.EntityFrameworkCore;
|
|
|
|
|
using Volo.Abp.TestApp.Testing;
|
|
|
|
|
using Volo.Abp.Uow;
|
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
namespace Volo.Abp.EntityFrameworkCore.Repositories;
|
|
|
|
@ -72,4 +74,39 @@ public class ReadOnlyRepository_Tests : TestAppTestBase<AbpEntityFrameworkCoreTe
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task ReadOnlyRepository_Should_NoTracking_In_UOW()
|
|
|
|
|
{
|
|
|
|
|
var repository = GetRequiredService<IRepository<Person, Guid>>();
|
|
|
|
|
var readonlyRepository = GetRequiredService<IReadOnlyRepository<Person, Guid>>();
|
|
|
|
|
|
|
|
|
|
await WithUnitOfWorkAsync(async () =>
|
|
|
|
|
{
|
|
|
|
|
await repository.InsertAsync(new Person(Guid.NewGuid(), "people1", 18));
|
|
|
|
|
await repository.InsertAsync(new Person(Guid.NewGuid(), "people2", 19));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
using (var uow = GetRequiredService<IUnitOfWorkManager>().Begin())
|
|
|
|
|
{
|
|
|
|
|
var p1 = await repository.FirstOrDefaultAsync(x => x.Name == "people1");
|
|
|
|
|
p1.ShouldNotBeNull();
|
|
|
|
|
p1.ChangeName("people1-updated");
|
|
|
|
|
|
|
|
|
|
var p2 = await readonlyRepository.FirstOrDefaultAsync(x => x.Name == "people2");
|
|
|
|
|
p2.ShouldNotBeNull();
|
|
|
|
|
p2.ChangeName("people2-updated");
|
|
|
|
|
|
|
|
|
|
await uow.CompleteAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await WithUnitOfWorkAsync(async () =>
|
|
|
|
|
{
|
|
|
|
|
(await repository.FirstOrDefaultAsync(x => x.Name == "people1")).ShouldBeNull();
|
|
|
|
|
(await repository.FirstOrDefaultAsync(x => x.Name == "people1-updated")).ShouldNotBeNull();
|
|
|
|
|
|
|
|
|
|
(await readonlyRepository.FirstOrDefaultAsync(x => x.Name == "people2")).ShouldNotBeNull();
|
|
|
|
|
(await readonlyRepository.FirstOrDefaultAsync(x => x.Name == "people2-updated")).ShouldBeNull();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|