0

この質問に対する簡単な答えを見つけるのに苦労しています。うまくいけば、誰かが助けてくれますか?

最初に MVC3 コードと EF4.1 を使用するシステムがあります。

いくつかのモデルがあり、監査機能を提供するために DbContext.SaveChanges をオーバーライドしようとしています。

監査から除外する必要がある特定の大量の列があります。

私は、AdditionalMetadata タグを次のように使用できることを望んでいました...

public class User : IAuditable
{
    [Key]
    public int UserID { get; set; }
    public string Name { get; set; }
    public string DisplayName { get; set; }
    [AdditionalMetadata("IgnoreAudit", true)]
    public DateTime? LastActive { get; set; }
}

そして、監査コードで次のようなものを使用します...

bool AuditThis = ModelMetadata
   .FromLambdaExpression(dbEntry.Property(propertyName), null)
   .AdditionalValues("IgnoreAudit");

変更をログに記録するかどうかを決定します。

明らかに、このコードはビューから取得された (そして変更された!) ため、失敗します。

私の質問はです。ModelMetaData を ViewContext の外で読み取ることはできますか、それとも間違ったツリーを鳴らしていますか?

お読みいただきありがとうございます。

4

1 に答える 1

0

ここでstackoverflowのポインターを見つけましたが、少し異なるものが必要でした

var metaData = ModelMetadataProviders
    .Current.GetMetadataForProperty(null, objType, propertyName);
于 2013-10-22T08:32:23.853 に答える