La maggior parte delle mie entità (non tutte) ha due proprietà denominate CompanyId
e Deleted
. Come sarebbe possibile inserire automaticamente queste due proprietà per tutte le richieste selezionate invece di impostare manualmente su ogni singola query che ho lungo l'intera app.
Esempio:
db.MyEntity.Where(me => me.Id == 1).Select(me => me.Description)
CompanyId
ed Deleted
. db.MyEntity.Where(me => me.Id == 1 && Deleted == false && CompanyId == 1).Select(me => me.Description
)
Mi aiuterebbe dover impostare queste condizioni su tutte le mie query in cui sono disponibili le proprietà.
Puoi aggiungere un filtro con l'aiuto del pacchetto nuget : EntityFramework.Filters . Inoltre, una buona idea è creare un'interfaccia comune invece di controllare dinamicamente l'esistenza delle proprietà:
public interface IMyEntityInterface
{
public int Id {get;set;}
public bool Deleted {get;set;}
}
public class MyEntity : IMyEntityInterface
{
public int Id {get;set;}
public bool Deleted {get;set;}
//other stuff
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions
.Add(FilterConvention.Create<IMyEntityInterface, int, bool>("MyFilter", (entity, Id, Deleted) => entity.Id == Id && entity.Deleted == Deleted);
}
Uso:
var filter = db.EnableFilter("MyFilter");
filter.SetParameter("Id", 1);
filter.SetParameter("Deleted", false);
var data = db.MyEntity.Where(me => me.CompanyId == 1).Select(me => me.Description);
//select Description from MyEntities where Id = 1 and Deleted = false and CompanyId = 1