Jaf*_*fin 4 entity-framework oracle11g dbcontext entity-framework-5
我需要在每个数据库会话开始时执行一些 SQL 命令。我通过 DbContext 使用 Entity Framework 5 与 Oracle 11g 数据库交谈。
我想执行:
ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=BINARY_CI;
Run Code Online (Sandbox Code Playgroud)
在会话创建开始时进行不区分大小写的搜索。
我怎么能最好地解决这个问题?
我已经将命令放在 dbContext 的构造函数中,但只有简单的单元测试,它似乎确实有效。但不确定这是否正确
public partial class Entities : DbContext
{
public Entities()
: base("name=Entities")
{
this.Database.ExecuteSqlCommand("ALTER SESSION SET NLS_COMP=ANSI");
this.Database.ExecuteSqlCommand("ALTER SESSION SET NLS_SORT=BINARY_CI");
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果有人正在阅读这篇文章,不,正确的方法是在连接打开时执行以下操作:
public Entities()
: base("name=Entities")
{
ctx.Database.Connection.StateChange += Connection_StateChange;
...
}
private void Connection_StateChange(object sender, StateChangeEventArgs e)
{
if (e.OriginalState == ConnectionState.Open || e.CurrentState != ConnectionState.Open)
return;
this.Database.ExecuteSqlCommand("ALTER SESSION SET NLS_COMP=ANSI");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2021 次 |
| 最近记录: |