2009-08-11 32 views
25

EF göstergesinde bu gezinme özelliklerinin birçoğunu görüyorum ama gerçekten ne için olduklarından emin değilim. Tablolarımın çoğunda gördüğüm gibi aspnet_Users özelliklerine sahibim.Varlık Çerçevesinde Gezinme Özellikleri nelerdir?

Bunlar ne için? Katılımlar için yardımcı olur mu? ya da ne?

Error 2 
Error 3007: Problem in Mapping Fragments starting at lines 1201, 1423: 
Non-Primary-Key column(s) [Field2] are being mapped in both fragments 
to different conceptual side properties - data inconsistency is possible 
because the corresponding conceptual side properties can be independently 
modified. 

cevap

44

bir navigasyon özelliği (yaa!) Bir varlıktan bir "bağlı" varlığa gezinmenizi sağlar.

E.g. Kullanıcınız bir role bağlıysa, kullanıcıyla ilişkili rolü okumak ve incelemek için "Rol" gezinmesini kullanabilirsiniz.

DÜZENLEME:

Eğer LINQ varlıkları ile kullanıcı yüklemek ve aynı zamanda onun "Rol" navigasyon tesiste, sen var bak açıkça LINQ sorgusunda "Rol" varlığını dahil etmek istiyorsanız - EF, bu navigasyon özelliklerini sizin için otomatik olarak yüklemez.

// load user no. 4 from database 
    User myUser = from u in Users.Include("Role") 
       where u.ID = 4 
       select u; 

    // look at the role the user has 
    string roleName = myUser.Role.Name; 

VEYA:

// load user no. 4 from database 
    User myUser = from u in Users 
       where u.ID = 4 
       select u; 

    // check to see if RoleReference is loaded, and if not, load it 
    if(!myUser.RoleReference.IsLoaded) 
    { 
     myUser.RoleReference.Load(); 
     // now, the myUser.Role navigation property should be loaded and available 
    } 

    // look at the role the user has 
    string roleName = myUser.Role.Name; 

Temelde bir veritabanında bir yabancı anahtar ilişkisi için programlı bir eşdeğer var - iki nesne arasında bir bağlantı. Temelde iki tablo (veya EF konuşmasında iki varlık) arasındaki bir birleşmeyi "gizler" veya birleştirir.

Marc

+0

Ah Ben bazı alanları ekleyerek sorun yaşıyorum. Ben bir tablo var gibi Tablo A 2 alan (Alan 1 ve Saha 2) sahiptir (TABLEA arama sağlar). Benim aspnet_userTable tüm standart asp.net üyelik alanları artı alan 1 ve alan 2. var ve aspnet_userTable için yeni bir kullanıcı eklemeye çalıştığınızda alan1 veya alan2 görmüyorum. Bu yüzden ilk önce aspnet_Users.Createaspnet_Users() 'ı bir aspnet_Users tablosunda saklayın (kullanıcıya bildirin). Ardından user.Field1 = "bir şey" denedim. sonra user.Field2 denedim (özellik bulunamadı). Gördüğüm kadarıyla bu var – chobo2

+1

user.TableA.Field1 ve user.TableA.Field2 ama ben ayarlamaya çalıştığımda sadece bazı null başvuru hatası alıyorum. Neyi yanlış yapıyorum? – chobo2

+0

Peki, dernekleriniz yanlıştır - sisteminize "TableA" adlı yeni bir tablo eklerseniz ve "aspnet_user" ile bir yabancı anahtar ilişkisi oluşturursanız, "TableA" nesnesinin "navigation_User" ile bir ilişkisi (navigation özelliği) olacaktır. "- diğer yoldan değil. Yani "TableA" varlığınızda, bir "aspnet_User" gezinme özelliği olmalıdır. –

İlgili konular