ใช้ขั้นตอนการจัดเก็บกับ Entity Framework หรือไม่?

ฉันต้องการทราบว่าฉันใช้ขั้นตอนการจัดเก็บกับ Entity Framework หรือเพียงแค่ผู้ใช้ Linq-to-Entities สืบค้นหรือไม่

ถือว่าอยากได้ออเดอร์ลูกค้า. ดังนั้นโซลูชันหนึ่งที่ทำได้สำเร็จโดยใช้ขั้นตอนการจัดเก็บที่ใช้การรวมบนสองตาราง และเช่น รหัสใบสั่งส่งคืนสินค้า

โซลูชันอื่นที่ทำได้โดยใช้คำสั่ง Linq-to-Entities โซลูชันนี้มีความต้องการมากกว่าโซลูชันแรก และนั่นคือ เราสามารถให้คุณสมบัติการนำทางของผู้ใช้เพื่อย้ายข้อมูลคำสั่งซื้อของลูกค้าได้อย่างง่ายดาย แต่ใน Stored Procedure เนื่องจากจะส่งคืน ID เท่านั้น จึงเข้าถึงข้อมูลการสั่งซื้อได้เพียงเล็กน้อย

แล้วอันไหนดีกว่ากันเมื่อพิจารณาถึงการตั้งค่าโซลูชันที่สอง


person r.zarei    schedule 28.12.2010    source แหล่งที่มา
comment
ภาษาอังกฤษแย่มากจนเข้าใจยาก   -  person kubal5003    schedule 28.12.2010
comment
หากคุณใช้ Entity Framework คุณจะไม่ใช้ Linq-to-SQL แต่ใช้ Linq-to-Entities แทน   -  person marc_s    schedule 28.12.2010


คำตอบ (1)


โซลูชันทั้งสองใช้งานได้ และเนื่องจากคุณไม่ได้ให้คำจำกัดความว่า "ดีกว่า" มีความหมายต่อคุณอย่างไร เราจึงไม่สามารถบอกคุณได้ว่าโซลูชันใด "ดีกว่า"

การใช้ขั้นตอนการจัดเก็บกับ Entity Framework เป็นไปได้อย่างแน่นอน - โดยเฉพาะกับ EF4 ขั้นตอนที่เก็บไว้มีข้อดี - คุณไม่จำเป็นต้องให้สิทธิ์การเข้าถึงตารางแก่ผู้ใช้โดยตรง คุณสามารถปล่อยให้ DBA ปรับแต่ง proc ที่เก็บไว้เหล่านั้นเพื่อประสิทธิภาพสูงสุด และคุณสามารถทำสิ่งต่าง ๆ เช่น ลบ Customer ได้โดยเพียงแค่เรียก proc ที่เก็บไว้ด้วย CustomerID เพื่อลบ (แทนที่จะต้องโหลดลูกค้าทั้งหมดก่อน เพียงเพื่อลบออก)

ดังนั้นขั้นตอนการจัดเก็บจึงมีประโยชน์อย่างแน่นอน - ข้อเสียสำหรับคนจำนวนมากคือพวกเขาต้องเขียนขั้นตอนเหล่านั้นใน T-SQL และในตอนนี้ ส่วนหนึ่งของแอปพลิเคชันของคุณก็อยู่ในโค้ด C# ของคุณ ในขณะที่อีกส่วนหนึ่งอยู่ในโค้ด T-SQL ของกระบวนงานที่เก็บไว้

ขอย้ำอีกครั้ง แม้จะคลุมเครืออย่างที่คุณถาม แต่ก็ไม่มีคำตอบที่ดีนักสำหรับเรื่องนี้ ทั้งสองวิธีนั้นใช้ได้และได้ผลทั้งสองวิธี - เป็นความชอบส่วนตัวเล็กน้อยว่าคุณต้องการใช้วิธีใด

person marc_s    schedule 28.12.2010