は、エンティティフレームワーク4.0コード最初のエンティティDBContextにアタッチする前に、属性だけでEF 4コードの最初のエンティティの[Key]を取得する方法はありますか?
public class MyEntity
{
[Key]
public int MyEntityId { get; set; }
}
プロパティの名前を知らなくても、[キー]属性で装飾されたプロパティの値を取得する方法はありますが与えられましたか?
public class KeyReader<TEntity> : where TEntity : class
{
public int GetKeyValue(TEntity entity){
//get key value for entity
}
}
UPDATE
私はDBContextを持っているので、私は次のコードを使用することができます:
var objectContext = ((IObjectContextAdapter) myContext).ObjectContext;
objectContext.ObjectStateManager.GetObjectStateEntry(entity).EntityKey.EntityKeyValues;
しかし、実体後にこの唯一の作品が追加されたりDBContextに添付されていますが。問題は、キーやその値の動的知識を使用して、挿入または更新を実行するかどうかを判断し、コンテキストに追加または添付するかどうかを判断することでした。このコードが可能になるまでには、これは遅すぎます。
これを反映する質問タイトルを編集しました。
これ以上の考えはありますか?
これは間違いありませんが、根本的なインテントの解決に役立たない理由については、私の更新を参照してください。とにかく私はその提案に感謝するので、私は投票しました。 –
あなたはそれを添付して、これを使ってキー値を取得することができます。それを追加する必要がある場合は、 'ObjectStateEntry.ChangeState(EntityState.Added)'を呼び出します。しかし、実際には間違ったことを最初にして、それが間違っているかどうかを確認してから修正します。あなたが受け入れた答えはおそらくより良い考えです。 – hvd