için DBNull.Value ve Boş metin kutusu değerini geçme Onların isteğe bağlıdır çünkü boş olabilir sayfamda Bazı metin kutularının var ve bu DAL koduveritabanına
parameters.Add(new SqlParameter("@FirstName", FirstName));
parameters.Add(new SqlParameter("@LastName", LastName));
parameters.Add(new SqlParameter("@DisplayName", DisplayName));
parameters.Add(new SqlParameter("@BirthDate", BirthDate));
parameters.Add(new SqlParameter("@Gender", Gender));
bu alanlardan herhangi boş edilebilir var. boşken Sorun Sonra
Procedure XXX requires @FirstName which was not supplied
almak Ben
parameters.Add(new SqlParameter("@FirstName", String.IsNullOrEmpty(FirstName) ? DBNull.Value : (object)FirstName));
parameters.Add(new SqlParameter("@LastName", String.IsNullOrEmpty(LastName) ? DBNull.Value : (object) LastName));
parameters.Add(new SqlParameter("@DisplayName", String.IsNullOrEmpty(DisplayName) ? DBNull.Value : (object) DisplayName));
parameters.Add(new SqlParameter("@BirthDate", BirthDate.HasValue ? (object)BirthDate.Value : DBNull.Value));
parameters.Add(new SqlParameter("@Gender", String.IsNullOrEmpty(Gender) ? DBNull.Value : (object) Gender));
için kodumu değiştirdi Fakat üçlü ifadesi aynı tip olması hem değeri gerektirdiğinden bu benim object
özellikle döküm için dağınık görünüyor.
Neden boş dize veya boş dizge NULL
veritabanında işlenmiyor? Bunu DBNull.Value
'a çevirmem gerekirse daha temiz bir yol var mı? Veritabanındaki boş dize olarak değeri kaydetmeniz yardımcı olabilirdi ancak veritabanındaki NULL
sorgusu dağınık olacak
Lütfen genel uygulamalarınız hakkında tavsiyelerde bulunun.
Komut nesnesine erişimim yok çünkü onu bir Base sınıfına ayırdım, bu yüzden onu çeşitli veritabanlarıyla [belirli bir veritabanına bağımlılıktan kaçınmak] kullanabilirim. Uzatma yöntemleri yaklaşımını seviyorum. Teşekkürler. – codingbiz
"DbNullIfNull" ile bir sorun olduğunu düşünüyorum. Orada mantığı anlayamadım, bu yüzden onu .NET 4.0 projeme yazdım ve kesinlikle yanlış! Benim tahminim, geri dönüşü (obj! = Null) kodlamak mı istiyorsunuz? obj: DBNull.Value; 'yerine dönmek? = null? obj: DBNull.Value; 'Sadece bir FYI. – jp2code
@ jp2code: Elbette, bu sadece bir yazım hatasıydı. Teşekkürler! Sabit. – abatishchev