J'ai besoin d'exposer une Entité de Données de Cadre de Cadre à la 3e partie des plugins. Le but est de permettre à ces plugins, pour récupérer uniquement les données et de ne pas les laisser émettre des insertions, des mises à jour ou suppressions ou toute autre base de données modification des commandes. Donc comment puis-je effectuer un contexte de données ou entité en lecture seule.
Réponse
Trop de publicités?En plus de la connexion avec un utilisateur en lecture seule, il ya quelques autres choses que vous pouvez faire pour votre DbContext.
public class MyReadOnlyContext : DbContext
{
// Use ReadOnlyConnectionString from App/Web.config
public MyContext()
: base("Name=ReadOnlyConnectionString")
{
}
// Don't expose Add(), Remove(), etc.
public DbQuery<Customer> Customers
{
get
{
// Don't track changes to query results
return Set<Customer>().AsNoTracking();
}
}
public override int SaveChanges()
{
// Throw if they try to call this
throw new InvalidOperationException("This context is read-only.");
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Need this since there is no DbSet<Customer> property
modelBuilder.Entity<Customer>();
}
}