2016-04-05 20 views
0

aşağıdaki özelliği içeren bir model vardır: oluşturulduktan sonra ben nesneyi incelersenizVarlık Framework tasarruf değil veri

public Guid UniqueID 
{ 
    get { return Guid.NewGuid(); } 
} 

, ben yeni guid doğru UniqueID alan için oluşturulduğunu görebilirsiniz.

Ancak, db.SaveChanges() numaralı telefonu aradığımda, Varlık Çerçevesinden, mevcut bir değer olmasına rağmen NULL ekleyemediğini belirten bir hata alıyorum.

Herhangi bir fikrin var mı?

DÜZENLEME

private Guid _uniqueID = Guid.NewGuid(); 
public Guid UniqueID 
{ 
    get 
    { 
     if(_uniqueID == null){ 
      _uniqueID = Guid.NewGuid(); 
     } 
     return _uniqueID; 
    } 
    set 
    { 
     _uniqueID = value; 
    } 
} 
+1

Gerçekten mülkünüze yeni bir GUID almak istiyor musunuz? –

+1

Şu anda, yinelenen nesnelerin veritabanına girdiği, şu anda teşhis ve düzeltmeye çalıştığımız, ancak geçici bir geçici çözüm bulunması gereken bir sorun var. Bu, kayıtların bizim için – DaRoGa

+2

kimliği gibi geçici bir durum için benzersiz olmasını sağlamanın en iyi yoludur. Her nesne için yeni bir kimlik istiyorsanız, yeni bir GUID değerine başlatılan özel bir alan oluşturun. Mülkte her eriştiğinizde yeni bir kimlik almak çok garip ve yaşadığınız davranışa neden olabilir. –

cevap

1

EF olsun okunur özelliklerini desteklemez. EF'in veritabanını yüklerken değeri ayarlayabilmesi için bir yol olması gerekir. Bu Düzenlemenizle biraz farklı olduğunu

private Guid _uniqueID = Guid.NewGuid(); 
public Guid UniqueID 
{ 
    get 
    { 
     return _uniqueID; 
    } 
    private set 
    { 
     _uniqueID = value; 
    } 
} 

Not: değişmez alanını yapmak istiyorsanız özel ayarlayıcı kullanabilirsiniz. ayarlayıcısını hazırladım ve Guid bir değer türü olduğu için if(_uniqueID == null)'u çıkardım ve asla boş olamaz.