Entity Framework Data Context をサードパーティのプラグインに公開する必要があります。目的は、これらのプラグインがデータのみをフェッチできるようにし、挿入、更新、削除、またはその他のデータベース変更コマンドを発行できないようにすることです。したがって、データ コンテキストまたはエンティティを読み取り専用にする方法を教えてください。
質問する
59619 次
6 に答える
205
読み取り専用ユーザーと接続する以外にも、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>();
}
}
于 2012-05-03T20:38:33.330 に答える
1
public sealed class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options, IHttpContextAccessor httpContextAccessor)
: base(options)
{
ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
}
}
SaveChanges をオーバーライドして例外をスローします
于 2021-08-23T09:35:44.933 に答える