EFCoreObjectSpace Class
An Object Space used for data manipulation in EF Core-based applications that do not use the Security System.
Namespace: DevExpress.ExpressApp.EFCore
Assembly: DevExpress.ExpressApp.EFCore.v24.2.dll
NuGet Package: DevExpress.ExpressApp.EFCore
Declaration
public class EFCoreObjectSpace :
CompositeObjectSpace,
IQuerySupport,
ISupportServerViews,
ISupportCriteriaCompiler,
ISupportServerExpressionEvaluator
Remarks
If your application uses the Security System, create the SecuredEFCoreObjectSpace instead of EFCoreObjectSpace.
In XAF application, use the XafApplication.CreateObjectSpace method to create this Object Space if the default Object Space Provider is EFCoreObjectSpaceProvider<TDbContext> (see the CreateDefaultObjectSpaceProvider method implementation of your WinApplication descendant).
The following example demonstrates how to use EFCoreObjectSpaceProvider<TDbContext> to create EFCoreObjectSpace in a non-XAF application.
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.EFCore;
using Microsoft.EntityFrameworkCore;
using System;
// ...
class Program {
static void Main() {
var objectSpaceProvider =
new EFCoreObjectSpaceProvider<ApplicationDbContext>(
(builder, _) => builder.UseSqlServer(
ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString));
IObjectSpace objectSpace = objectSpaceProvider.CreateObjectSpace();
// ...
}
}
You can find the full example in the following GitHub repository: How to use the Integrated mode of the Security System in non-XAF applications (EF Core).
To learn more about Object Spaces, refer to the BaseObjectSpace class description.
Important Note
The EF Core Object Space does not support top level agregate functions in criteria. Use Free Joins instead.
// Invalid code:
// int totalNumber = (int)ObjectSpace.Evaluate(typeof(Department), CriteriaOperator.Parse("Sum([NumberOfEmployees])"), null);
// ...
// Valid code:
int totalNumber = (int)ObjectSpace.Evaluate(typeof(Department), CriteriaOperator.Parse("[<Department>].Sum([NumberOfEmployees])"), null);