มันยังไม่ตาย แต่ Microsoft มุ่งเน้นไปที่ Entity Framework
ฉันใช้ LINQ กับ SQL ในโครงการขนาดเล็กและมันค่อนข้างดีเป็น data-layer ที่มีน้ำหนักเบาและฉันจะลองใช้อีกครั้งในโครงการขนาดใกล้เคียงกัน การดำเนินงาน LINQ ตัวเองเป็นสิ่งที่ดีจริงๆและจนกระทั่งเมื่อเร็ว ๆมากดีกว่าโครงการ NHibernate LINQ ในโครงการขนาดใหญ่ที่ฉันใช้ L2S ฉันพบว่ามันยากที่จะเกิดขึ้นกับรูปแบบหน่วยการทำงานที่ฉันมีความสุขเนื่องจากข้อ จำกัด กับคลาส 'DataContext' ของ L2S การพยายามใช้งานบางอย่างเช่น 'เซสชันต่อคำขอ' กับ L2S ดูเหมือนว่าจะยากหรือเป็นไปไม่ได้
ฉันยังไม่คิดว่า L2S เป็น ORM จริงเพราะมันไม่ได้ให้ตัวเลือกการทำแผนที่มากมายกับคุณ การออกแบบคลาสของคุณจำเป็นต้องทำตามสคีมาฐานข้อมูลของคุณ (ตารางต่อคลาส) มิฉะนั้นมันจะต่อสู้กับคุณทุกขั้นตอน อีกสิ่งหนึ่งที่ฉันไม่ชอบเกี่ยวกับ L2S คือความต้องการใช้ประเภทเฉพาะ ( EntitySet
และEntityRef
) เพื่อจัดการคอลเลกชันการอ้างอิงและการโหลดแบบสันหลังยาว ซึ่งหมายความว่าเป็นไปไม่ได้ที่จะรักษาโมเดล ORM ของผู้ไม่เชื่อเรื่องพระเจ้าโดยไม่ต้องเพิ่มเลเยอร์สิ่งที่เป็นนามธรรม
ปัญหาอื่นของฉันกับ L2S คือการพึ่งพา LINQ แต่เพียงผู้เดียวในการสร้างแบบสอบถาม ผู้ให้บริการ LINQ เขียนได้ดีมากและโดยทั่วไปจะสร้าง SQL ที่เหมาะสมสำหรับการสืบค้นส่วนใหญ่ แต่ฉันมีความกังวลว่ามีการสืบค้นที่ซับซ้อนมากขึ้นซึ่งไม่สามารถแสดงได้ดีกับ LINQ การใช้ L2S นั้นโดยทั่วไปคุณต้องกลับไปเรียกขั้นตอนการจัดเก็บในกรณีเหล่านี้ในขณะที่ (ตัวอย่าง) NHibernate มี API (ผู้ให้บริการ LINQ, QueryOver, HQL และอื่น ๆ ) ของ API ที่สามารถใช้เมื่อคุณต้องการควบคุม SQL ที่สร้างขึ้น
ในการป้องกันของ L2S เหนือ NHibernate มีค่าใช้จ่ายน้อยกว่ามากในการทำให้มันใช้งานได้