0

Benim modelim aşağıdaki görünür: Yapmam bağlamda yeni AliveCheckedRealestate eklediğindekullanırken: '' tablosundaki kimlik sütunu için açık değer eklenemiyor ıdentıty_ınsert ayarlandığında için KAPALI

public class AliveCheckedRealestate 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [Key, Column(Order = 0)] 
    public int RealestateId { get; set; } 

    [Key, Column(Order = 1)] 
    [ForeignKey("Job")] 
    public int JobId { get; set; } 


    public virtual AliveCheckJob Job { get; set; } 
} 

aşağıdaki:

job.AliveCheckedRealestates.Add(new AliveCheckedRealestate(){RealestateId = 33}); 

Ancak her zaman ben, değişiklikleri (yeni AliveCheckedRealestate vardır) kaydetmeyi deneyin (iş veritabanında hazır bir iştir) Aşağıdaki özel durum almak:

tablodaki kimlik sütun için açık değer eklenemiyor 'AliveCheckedRealestates' ıdentıty_ınsert OFF olarak ayarlandığında.

Burada sorun ne olabilir? RealestateId elle ayarladığım benzersiz bir tamsayıdır (yabancı anahtar değildir) ve ben bunu ayarlamam gerekir.

+0

RealestateId hala SQL Server'da bir kimlik olarak işaretlenmiş mi? Veritabanı zaten oluşturulduktan sonra DatabaseGeneratedOption.None eklediyseniz, bu durum oluşabilir. –

cevap

0
Masanın karşı aşağıdaki sql komutunu çalıştırmak zorunda olacak

:

SET ıdentıty_ınsert Table_Name ON;

EF'in SQL ile yapmanın tek yolu olduğunu bildiğim kadarıyla, kimlik eklemeyi ayarlamak için EF'e herhangi bir dahili yol bilmiyorum.

NOT: İyi bir uygulama değil, hiç bir şey tavsiye edilmez. Yinelenen değerlere sahip olabilirsiniz, böylece kimlik sütununun sizin için değerleri oluşturmasına izin verin. Değerleri kendiniz ekleyebilmek istiyorsanız, o zaman bir kimlik sütunu yapmayın.

+0

Açıklamanız için çok teşekkürler. Bunun yerine düzgün çalışan bir normal Id anahtar sütunu oluşturmayı bitirdim. –