bir varlık çerçevesi 4,0 kod ilk varlıkDBContext'e bağlanmadan önce EF 4 kodunu ilk varlığın [Key] özelliğini yalnızca özniteliğe nasıl alırsınız?
public class MyEntity
{
[Key]
public int MyEntityId { get; set; }
}
tesisin adını bilmeden [Anahtar] özniteliği ile dekore özelliğin değerini almak için bir yol var mı Verilen?
public class KeyReader<TEntity> : where TEntity : class
{
public int GetKeyValue(TEntity entity){
//get key value for entity
}
}
GÜNCELLEME
Bir DBContext var, bu yüzden aşağıdaki kodu kullanabilirsiniz:
var objectContext = ((IObjectContextAdapter) myContext).ObjectContext;
objectContext.ObjectStateManager.GetObjectStateEntry(entity).EntityKey.EntityKeyValues;
Ancak varlık sonra bu sadece çalışır eklenen veya DBContext bağlı olmuştur . Sorun, bir ekleme veya güncellemenin gerçekleştirilip gerçekleştirilmeyeceğini ve dolayısıyla içeriğe eklenip eklenmeyeceğini belirlemek için anahtarın ve değerinin dinamik bilgisini kullanmak istediğimdi. Bu kod mümkün olduğunda, bu çok geç.
Bunu yansıtmak için soru başlığını düzenledim.
Herhangi başka düşünceler? Eğer varlık parçasıdır ObjectContext
varsa
Bu doğrudur ama bu temel amacını çözümünde yardımcı olduğu neden olarak benim güncelleme göreceksiniz. Yine de oy verdim, çünkü öneriyi takdir ediyorum. –
Siz * ekleyebilir, anahtar değerlerini almak için bunu kullanabilirsiniz, eğer eklemiş olmanız gerektiğini görürseniz, 'ObjectStateEntry.ChangeState (EntityState.Added)' öğesini çağırın. Ama gerçekten, bu yanlış bir şey yapıyor, yanlış yapıp yapmadığınızı kontrol ediyor ve düzeltiyor. Kabul ettiğin cevap muhtemelen daha iyi bir fikir. – hvd