Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to know if an object is tracked by Entity Framework Core

I'm using .NET 6 and Entity Framework Core 6 (6.0.2) in an ASP.NET Core Web API project.

Assuming I have:

public class MyModel 
{
    public Guid Id { get; set; }
    public string MyData { get; set; }
    //etc...
}

public class ApplicationDbContext : DbContext
{
    public DbSet<MyModel> MyModels { get; set; }

    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> opt) : base(opt)
    {
    }
}

If I'm in a generic function with the object MyModel myModel, then how can I know if this instance of MyModel is an entity tracked by Entity Framework Core?

I'm looking for a function like:

ApplicationDbContext context = ...
MyModel myModel = ...
//ecc...
bool result = context.IsOneOfMyEntity(myModel);
like image 643
Valerio Ceccarelli Avatar asked Jan 26 '26 16:01

Valerio Ceccarelli


1 Answers

You can use Entry method

This method may be called on an entity that is not tracked. You can then set the State property on the returned entry to have the context begin tracking the entity in the specified state.

and check the State property for value other than Detached

Detached 0 The entity is not being tracked by the context.

e.g.

bool tracked = context.Entry(myModel).State != EntityState.Detached;
like image 178
Ivan Stoev Avatar answered Jan 29 '26 06:01

Ivan Stoev



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!