まず、EFモデルで自分のモデルに問題があります。私は、セキュリティ層とエンティティ層とmvc3層と、Webアプリケーションを持っています。だから各層で私は私の文脈のdbのインスタンスを置く(主要な宣言セクションの各クラスのために1つ)。問題は、ログインプロセスを検証するために、yは私のデシベルの任意のユーザーを見つけたときである、単純な検索、エンティティのいずれかの変更を加えていない、このようなものです:私は他の層に例えばパスワードを変更する場合ログアウトサイト後のEF強制モデルのリフレッシュ
var usr = db.Usuarios.First(user => user.UserName.Equals(userName));
(中私のコントローラのユーザ)、ログアウトし直すと、linq検索(コードアップ参照)は常に古いパスワードを返します。これはコンテキストdbのためのものであり、データのためにデータベースに行きません。単純にモデルのユーザをロードしてください。
したがって、データベースからデータをリフレッシュするようにモデルを強制する方法はありますか? 私は、怠惰な負荷を偽に入れようとしますが、うまく動作しません。
db.Configuration.LazyLoadingEnabled = false;
部分の仕事私はpassworkを検証し、このインスタンスを配置するmetodに私のコンテキストのインスタンスをdecalre、私はそれが最善の方法だと思います。そのような
は:
public static bool ValidateUser(string userName, string password)
{
if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password))
{
var dbtmp = new ConorContainer();
var usr = dbtmp.Usuarios.First(user => user.UserName.Equals(userName));
if (usr != null)
{
var passDescrypt = Decript(usr.Password);
dbtmp.Dispose();
return passDescrypt.Equals(password);
}
return false;
}
return false;
}
tks Erangaは完璧に動作しますが、これはdbtmp.dispose()と似ていますか? –
@RaymundoChavezはい – Eranga