2010-06-28 22 views
5

Endeksli bir görünümüm var, makul bir şekilde gerçekleştirmesi için noexpand ipucu belirtmem gerekiyor. Maalesef, Linq'den SQL'e NOLOCK ipucundan üretilen T-SQL sorgusunu değiştirmekle ilgili olarak görüldüğü gibi, bu ipuçlarından doğrudan yararlanmak için kolay bir yolun olmadığı ya da var mı?NOEXPAND ipucu, Linq to SQL ile nasıl kullanılır?

Düşüncelerim, bu şeylerin özniteliklerin kullanımıyla veya dbml aracılığıyla bildirimli bir şekilde özelleştirilmesine izin verilmesi mantıklı olacaktır. Ayrıca Linq to SQL sadece SQL Server'ı hedeflemek için çalıştığı için bu gelişmiş özellikleri (eğer varsa) kaldırabilmemiz mantıklıdır. Uygulamadan bağımsız olarak, bu sorunu çözmenin herhangi bir yaratıcı yolu ile ilgileniyorum.

cevap

9

Çalışmak üzere görünen ancak NOEXPAND ipucunu kullanmak istediğiniz her SQL View için ikinci bir Görünüm oluşturmayı gerektiren bir geçici çözüm buldum. İkinci görünümde, orijinal görünümden tüm alanları seçin ve NOEXPAND ipucuna dokunun. NOEXPAND ipucunu kullanmak için gereken herhangi bir Linq'den SQL sorgusu, yalnızca orijinali saran bu görünümü hedefleyebilir.

Daha fazla ayrıntı this MSDN post adresinde bulunabilir. bağımlı görünüm oluşturma Eğer

herkes daha iyi alternatifler var mı

doğru bağımlılık sırayla oluşturma komut dosyalarını uygulamak için emin olmak zorunda olacağını olduğunda diğerleri arasında

Bir aşağı tarafı dikkate almak? Bu gerekli iyileştirici ipucunun kullanımını desteklemek için ekstra SQL Görünümleri oluşturmak zorunda kalmamayı tercih ederim.

2

Tamamen katılıyorum ama böyle bir yöntem olduğuna inanmıyorum. EF4'te, SQL'i doğrudan çalıştırmanıza izin veren ExecuteStoreCommand'u kullanabilirsiniz. Performans kabul edilemez ise bu tek seçenek olabilir.

== DÜZENLEME ==

Ayrıca ExecuteQuery yöntemle LINQ to SQL yapabilirsiniz. Varlık Framework Ben ona ikinci bir göz atın ve SQL ama yeterince zorlayıcı sebepler ve sonra ben böyle dönüşümü araştırma için zaman bulabilirsiniz sürece şimdilik Linq geçiş düşünebilir daha yetenekli hale geldiğini Şimdi

http://msdn.microsoft.com/en-us/library/bb399403.aspx

+0

Linq'den SQL'e bir çözüm ile daha çok ilgileniyorum. EF4'ün ExecuteStoreCommand özelliğini şu an için dikkat çekici bir avantaj olarak göreceğim. – jpierson

+2

Evet, oops. Şimdi günlerdir birbirleriyle değişiyor! :) Cevabımı LINQ ile SQL'e güncelledim. Mimari kalıbı kırmak ve bir SQL dizgisi yürütmek gibi bir şey yapmak asla eğlencelidir, ancak SQL Server'a zaten bağlı olduğunuzu düşünürsek, itiraz sadece saflık değil pratikliktir. –

+0

Benim özel durumumda, tamamen ertelenmiş ve oldukça dinamik sorgularla uğraşıyorum, bu yüzden ExecuteQuery gibi doğrudan yürütme tekniklerini hariç tuttuğumu düşünüyorum. – jpierson