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

Time:02-21

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);

CodePudding user response:

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;
  • Related