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;