2013-01-04 14 views

cevap

7

için, değil sadece yasal ve tamamen standart güvenli olmasıdır. Bu, OO'nun neyle ilgili olduğu. Sadece düşüş yaptın. Bir DbSet tasarımcılar tarafından tanımlanan sözleşme başına, bir IQUeryable olmak HAS.

+0

5.0 belgelerine http bakarak, mahzun ilgili olarak: // msdn.microsoft.com/en-us/library/system.data.entity.dbset(v=vs.103).aspx (6.0 sürümü bulamadık), DbSet IQueryable'dan miras kalmıyor gibi görünüyor, işte bu yüzden bana biraz balık gibi görünüyor. – Dante

+3

@JohnNevermore Genel sürümüne bakın: http://msdn.microsoft.com/en-us/library/gg696460(v=vs.103).aspx – ken2k

+2

Aptalca, tamamen özledim. Teşekkürler. – Dante

4
AsQueryable() dikkatli olun

. Değişkeninizden biri, AsQueryable(), numaralı telefonu aradıktan sonra IQueryable<IEntity> türündeyse, değişkenin somut türünün (örneğinizde DbSet<IEntity>) olduğunu artık bilmiyorsunuzdur.

, numaralı bir OOP perspektifinden mükemmel bir şekilde geçerlidir (arayüzlerin tüm noktasıdır!), Çok fazla hataya/hataya yol açabilir. Bir DbSet<IEntity> kaynağı numaralandırmak kadar, aslında sorguyu yürütmek olmadığını unutmayın. neden örneğin sen katılamaz oluyor

bellek içi .Union(...) kullanarak DbSet<IEntity> sonucundan (örneğin new List<IEntity>{ ... }.AsQueryable() için) IQueryable<IEntity> ...

İlgili konular