2016-06-17 5 views
0

は、私は例外を把握しようと、エンティティオブジェクトのIDが生成される方法を思ったんだけど:Entity Frameworkの動的プロキシに関連付けられたGUIDのようなIDは何ですか?

System.Data.Entity.DynamicProxies.TaskInstance_EFB25059687D16F3AB6ABF93C582495406916AC2CC28E7E312CB6B50EC3CF7A5.get_TaskLogsを()

タスクインスタンスはここにあるエンティティ。例外が発生するたびに同じ識別子を持ちます。ちょうどそれがどのように下に動作するのだろうか。 BuildEntityTypeDescription()等型のナビゲーションプロパティから文字列を構築する方法、キーメンバーであるプロキシタイプの生成に関するEFのコードベースにSomehwere

答えて

0

、この方法がある...

// <summary> 
// Creates an SHA256 hash of a description of all the metadata relevant to the creation of a proxy type 
// for this entity type. 
// </summary> 
private string BuildEntityTypeHash() 
{ 
    using (var sha256HashAlgorithm = MetadataHelper.CreateSHA256HashAlgorithm()) 
    { 
     var hash = sha256HashAlgorithm.ComputeHash(Encoding.ASCII.GetBytes(BuildEntityTypeDescription())); 

     // convert num bytes to num hex digits 
     var builder = new StringBuilder(hash.Length * 2); 
     foreach (var bite in hash) 
     { 
      builder.Append(bite.ToString("X2", CultureInfo.InvariantCulture)); 
     } 

     return builder.ToString(); 
    } 
} 

...

したがって、基本的にプロキシタイプ名は型のメタデータのハッシュ表現であるため、型が変更されない限り、常に同じ文字列になります。

関連する問題