Comments (4)
Hi @datnt97,
I think you're missing the methods that return TResult
in your repository implementation. Here is the built-in implementation.
from specification.
Hey @datnt97
Here I created a full sample app for you. We're confident it works properly, it's battle-tested on production for a long time. Perhaps you should cross-check everything on your side once again. This is the generated SQL statement for the app.
SELECT [c].[Id], [c].[FirstName]
FROM [Customers] AS [c]
using Ardalis.Specification;
using Ardalis.Specification.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
await AppDbContext.SeedAsync();
using var dbContext = new AppDbContext();
var repo = new Repository<Customer>(dbContext);
var spec = new CustomerDtoSpec();
var result = await repo.ListAsync(spec);
Console.WriteLine(result.Count);
public interface IRepository<T> : IRepositoryBase<T> where T : class { }
public class Repository<T> : RepositoryBase<T> where T : class
{
public Repository(AppDbContext dbContext)
: base(dbContext) { }
}
public class CustomerDtoSpec : Specification<Customer, CustomerDto>
{
public CustomerDtoSpec()
{
Query.Select(x => new CustomerDto
{
Id = x.Id,
FirstName = x.FirstName
});
}
}
public class CustomerDto
{
public int Id { get; set; }
public string? FirstName { get; set; }
}
public class Customer
{
public int Id { get; set; }
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet<Customer> Customers => Set<Customer>();
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connectionString = "Data Source=(localdb)\\MSSQLLocalDb;Initial Catalog=SpecificationSelectDemo;Integrated Security=SSPI;Trusted_Connection=true";
optionsBuilder.UseSqlServer(connectionString).LogTo(Console.WriteLine);
}
public static async Task SeedAsync()
{
using var dbContext = new AppDbContext();
var customers = new List<Customer>()
{
new() { FirstName = "Customer1", LastName = "Customer1" },
new() { FirstName = "Customer2", LastName = "Customer2" },
new() { FirstName = "Customer3", LastName = "Customer3" },
};
await dbContext.Database.EnsureCreatedAsync();
dbContext.AddRange(customers);
await dbContext.SaveChangesAsync();
}
}
from specification.
I tried it. But it seems like it's not working as expected as well. Am I doing something wrong here?
from specification.
Thank you for your greatest help!
from specification.
Related Issues (20)
- Strange behavior when compare DateTime HOT 3
- Apply Distinct in specification query HOT 1
- How to combine specifications? HOT 17
- Implementing additional provider for Azure Storage Tables HOT 1
- Which Design Pattern is behind Evaluators? HOT 1
- Cannot unit test specifications which sort by a Smart enum HOT 2
- Apply Entity and Aggregate Domain-Driven Design approach to Specification and Repository HOT 2
- ardalis.specification.entityframeworkcore is missing NuGet package README file
- Many-to-Many w/ INNER JOIN HOT 1
- System.MissingMethodException: Method not found
- Ardalis.Specification.EntityFramework6.csproj doesn't target net7.0 or net8.0 HOT 5
- Allow combination of Specification with different projections HOT 6
- InMemory SearchExtension bug HOT 3
- How to use ExecuteUpdateAsync? HOT 8
- Search in result dto object instead of db class HOT 4
- Make the SaveChangesAsync call optional in RepositoryBaseOfT HOT 8
- Reading as 'System.Object' is not supported for fields having DataTypeName 'public.vector'
- Make repository methods protected to allow for subclassing HOT 2
- Search by value object's Value property: Translation error HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from specification.