การรวมโปรแกรมมิงและเคียวรีฐานข้อมูล [ปิด]


11

พิจารณาบทช่วยสอนทั่วไปสำหรับภาษาการเขียนโปรแกรมเชิงวัตถุเช่น C ++ หรือ Java: สร้างระบบการประมวลผลคำสั่งง่ายๆด้วยวัตถุที่แสดงถึงบัญชีคำสั่งซื้อรายการอื่น ๆ (หรือสิ่งที่เทียบเท่าหรือมากกว่านั้น) ทำให้ความรู้สึกเป็นธรรมชาติสมบูรณ์แบบ แต่ช้างที่โต๊ะอาหารคือมันไม่จริงเพราะสิ่งเหล่านี้เป็นวัตถุในหน่วยความจำ ในระบบจริงบัญชีคำสั่งซื้อและอื่น ๆไม่ได้อยู่ในหน่วยความจำจริง ๆพวกเขาอาศัยอยู่ในฐานข้อมูลด้วยการเป็นตัวแทนของหน่วยความจำเพียงกระจกที่มีอายุสั้น

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

ทุกคนลงเอยด้วยการใช้ ORM แต่สิ่งเหล่านี้มีปัญหาในสิทธิของตนเองที่มีชื่อเสียงเรียกว่า 'เวียดนามของอุตสาหกรรมของเรา'

ฉันไม่คิดว่าที่ไม่ตรงกันระหว่างวัตถุและความสัมพันธ์ให้มากที่สุดเท่าที่ไม่ตรงกันระหว่างการเขียนโปรแกรมภาษาและฐานข้อมูลเป็นสิ่งที่แยกต่างหากที่ไม่ทราบเกี่ยวกับแต่ละอื่น ๆ การคาดเดา: การแก้ปัญหาคือการมีภาษาเดียวที่เป็นทั้งภาษาโปรแกรมและฐานข้อมูลแบบสอบถามซึ่งจะต้องใช้ภาษารันไทม์ยังเป็นฐานข้อมูลและคอมไพเลอร์ JIT ยังเป็นเครื่องมือเพิ่มประสิทธิภาพแบบสอบถาม

นั่นคือบทสรุปของปัญหาที่ฉันเห็น คำถามของฉันคือมีใครเลย

  1. สร้างขึ้นจริงเช่นระบบแบบครบวงจร

  2. พยายาม แต่ล้มเหลวในการสร้างระบบแบบครบวงจร

  3. เขียนสิ่งสำคัญในหัวข้อว่าคุณจะสร้างสิ่งนั้นได้อย่างไรหรือเพราะเหตุใด

  4. หาทางเลือกอื่นในการแก้ปัญหาหรือไม่


5
เมื่อคุณมีภาษาที่รวมฐานข้อมูลและรหัสแล้วคุณต้องคิดค้นภาษาที่รวมฐานข้อมูลรหัสและ HTML จากนั้นคุณต้องรวมเป็นหนึ่งเดียวกับ JSON จากนั้นคุณต้องรวมกันกับ regexp อย่างใกล้ชิดกว่า perl จากนั้นคุณต้องรวมเป็นหนึ่งเดียวกับฐานข้อมูลแบบลำดับชั้นเช่น LDAP (เช่นไดเรกทอรี Microsoft Active ใช่เป็นฐานข้อมูล) จากนั้นคุณต้องรวมเป็นหนึ่งเดียวกับฐานข้อมูลคีย์ - ค่าเช่น Mongo หรือ Cassandra จากนั้นคุณต้องรวมกันด้วยการเรนเดอร์ 3D เป็นต้นและดูเหมือนว่าคุณกำลังขอเครื่องมือคอมโบค้อน - ประแจ - เครน - พลั่ว - ไขควง - เป่า - เป่า - นักเป่า
ฆ่า

1
ดูเหมือนว่าแอปพลิเคชันโซลูชันที่คุณเสนอจะไม่สามารถเข้าถึงฐานข้อมูลระยะไกลหรือฉันเข้าใจผิดคุณหรือไม่ เนื่องจากทั้งแอปพลิเคชันและฐานข้อมูลใช้อินสแตนซ์เดียวกันของรันไทม์
หยุดทำร้ายโมนิก้า

2
ไม่เกี่ยวกับเทคโนโลยี แต่เกี่ยวข้องกับชุดข้อมูลมากกว่า ฉันเคยต้องเพิ่มประสิทธิภาพของรหัสเพราะ regex ใช้เวลา 3 นาทีในการดำเนินการ ปรากฎว่าผู้คนกำลังอ้างถึงข้อความทั้งหมดเมื่อตอบกลับอีเมลและบางครั้งอีเมลอาจโตถึง 5mb ที่ regex เพียง 5mb เท่านั้นอาจทำให้หายใจไม่ออก ดังนั้น SQL จึงเร็วพอ เราจำเป็นต้องเพิ่มประสิทธิภาพ regexp
slebetman

2
นอกจากนี้ยังมีค่าที่ชี้ให้เห็นว่า "การเพิ่มประสิทธิภาพ" หมายถึงความแตกต่างแม้ใน RDBMS ขึ้นอยู่กับเป้าหมายของแอปพลิเคชันของคุณ คุณทำดัชนีอะไร เมื่อไหร่? อย่างไร? ฟิลด์ใดที่คุณรวมไว้ในดัชนี คุณปรับให้เหมาะสมสำหรับความเร็วในการเขียนสูงหรือความเร็วของแบบสอบถามสูงหรือเพิ่มความสมบูรณ์ของธุรกรรมหรือไม่ tradespace นั้นจะไม่เปลี่ยนแปลงโดยการทำให้มันเป็นส่วนหนึ่งของภาษาพื้นเมืองหากมีสิ่งใดที่ซับซ้อนและทำให้นักพัฒนาเข้าใจมากขึ้นเกี่ยวกับเลเยอร์การติดตามากกว่าที่เขา / เธอต้องการตอนนี้ (สมมติว่าคุณมีทีมและไม่ เพียงคนเดียว)
พอล

1
ฉันคิดว่าการพูดถึงLINQที่นี่มีความเกี่ยวข้องน้อยที่สุดกับ 1
Casey Kuball

คำตอบ:


7

นี่คือความคิดเห็นของฉัน. ในขณะที่ฉันเห็นว่าคุณมาจากไหนฉันไม่เห็นว่ามันเกิดขึ้นจากมุมมองของการออกแบบ

ความคงทนของข้อมูลเป็นเรื่องที่ซับซ้อนมาก และภาษาโปรแกรมก็เช่นกัน การรวมสองสิ่งเข้าด้วยกันจะส่งผลให้เกิดการระเบิดที่ซับซ้อน มันต้องใช้ความพยายามอย่างมากในการทำให้ทั้งสองอย่างดีพอสำหรับคนที่ต้องการใช้งานจริง ฉันคิดว่าMUMPS ที่กล่าวถึงแล้วเป็นตัวอย่างที่ดี หรือคุณสามารถดูตัวแปร SQL ต่างๆที่มีภาษาเต็มรูปแบบติดอยู่ด้านบนของพวกเขา พวกเขาอาจใช้งานได้ แต่ฉันไม่คิดว่าคนจะเต็มใจใช้พวกเขา

ดังนั้นการแยกพวกมันจึงเป็นวิธีที่ชัดเจนในการแก้ปัญหาความซับซ้อนนี้ ยิ่งไปกว่านั้นหากไม่รวมมันเข้าด้วยกันมันจะทำให้ทั้งคู่มีการเปลี่ยนแปลงและพัฒนาไปตามกาลเวลา ตัวอย่างเช่น SQL เก่าและไม่เปลี่ยนแปลงมากนักตั้งแต่สร้างขึ้น แต่ภาษาที่ใช้เรียกใช้แอปพลิเคชันเปลี่ยนไปอย่างมากในช่วงเวลาเดียวกัน และตอนนี้สิ่งที่ตรงกันข้ามกำลังเกิดขึ้น ภาษายังคงเหมือนเดิมส่วนใหญ่ในขณะที่ฐานข้อมูลมีการเปลี่ยนแปลงและพัฒนา

การปรับใช้รันไทม์เป็นปัญหาอื่น การรวมสองสิ่งเข้าด้วยกันหมายถึงทั้งฐานข้อมูลและแอปพลิเคชันหรือเว็บเซิร์ฟเวอร์จะต้องทำงานในกระบวนการเดียวกัน นี่เป็นข้อ จำกัด อย่างมากทั้งจากมุมมองการบำรุงรักษาและจากความสามารถในการรันบนคอมพิวเตอร์ที่แยกต่างหากหรือในความสัมพันธ์แบบหนึ่งต่อหนึ่ง

การแยกทั้งสองออกเป็นโมดูลแยกต่างหากด้วย API ที่ชัดเจนระหว่างกันเป็นวิธีที่ดีที่สุดในการลดความซับซ้อนและให้ความยืดหยุ่นในสิ่งที่เทคโนโลยีที่คุณต้องการใช้และวิธีการปรับใช้ชิ้นส่วนสุดท้าย


TL; DR "ไม่ใช่ความคิดที่ดีเพราะการรวมพวกเขาเป็นการละเมิดข้อกังวล"
ferit

5

ดูเหมือนว่าคุณกำลังตั้งสมมติฐานที่สำคัญ ตัวอย่างเช่นคุณสมมติว่าทุกคนกำลังเขียนไปยังฐานข้อมูลเชิงสัมพันธ์ มีหลายตัวอย่างของฐานข้อมูลของรสชาติอื่น ๆ (object dbs, dbs เอกสาร ฯลฯ ) ที่ใช้ภาษาการเขียนโปรแกรมดั้งเดิมเพื่อเขียนโค้ดทั้งหมดและจัดการการคงอยู่

ตัวอย่างเช่น Db4O เข้ากันได้กับทั้ง Java และ C #, ObjectDB ใน Java, VelocityDB ในหลากหลายภาษา ท้ายที่สุดแล้วไดรเวอร์ของ MongoDB ก็มีคุณเขียนเนื้อหาเป็นภาษาโปรแกรมของคุณเอง (โบนัสถ้าคุณใช้ JavaScript เพราะนั่นหมายความว่าเชลล์ใช้ไวยากรณ์เดียวกัน) และอื่น ๆ

มีการถกเถียงกันมากมายในสถานที่ต่าง ๆ เกี่ยวกับเอ็นจิ้น DB ซึ่งดีกว่าในบริบทใดและทำไมไกลเกินขอบเขตของคำตอบนี้เพื่อรวมคำถามปิดในเว็บไซต์นี้ ผลที่สุดคือพวกเขาแต่ละคนได้รับการปรับให้เหมาะสมกับสิ่งต่าง ๆ และจนกระทั่งเมื่อเร็ว ๆ นี้ SQL ได้รับการพิจารณาว่าเป็น 'ตัวหารร่วมที่ต่ำที่สุด' สำหรับแอปพลิเคชันธุรกิจเพราะคุณได้รับจำนวนมากฟรีในแง่ของกรดและประสิทธิภาพ เมื่อเร็ว ๆ นี้เมื่อสถาปัตยกรรมและข้อกำหนดเปลี่ยนไป)

นอกจากนี้ยังเป็นที่น่าสังเกตว่ามีหลายวิธีในแบบ "ทั้งหมดในที่เดียว" มาก่อน ภาษาเมนเฟรมมักจะมีตรรกะการคงอยู่ของตัวเองและมีภาษาเช่น Smalltalk ที่ไม่แยกความแตกต่างระหว่างรหัสและข้อมูลเลย อีกครั้งพวกเขามักจะดีสำหรับการใช้งานบางกรณี แต่ไม่ใช่ทั้งหมด


5
  1. ใช่ (ไม่ใช่ฉัน) มันถูกเรียกว่าคางทูม

  2. ตามคำถาม SE.SEนี้ในอดีตหรือบทความนี้ MUMPs ไม่ได้รับการออกแบบมาเป็นอย่างดี แต่มีการใช้งานจริงในอุตสาหกรรมสุขภาพ (และฉันคิดว่ายังคงมีระบบที่ใช้อยู่) ดังนั้นจึงไม่ใช่ความล้มเหลวทั้งหมด

  3. คุณจะพบข้อมูลเกี่ยวกับสิ่งนี้ทันทีที่คุณรู้ว่าจะต้องค้นหาอะไร เริ่มต้นด้วยลิงค์ Wikipedia ด้านบน

  4. ค้นหาฐานข้อมูลเชิงวัตถุส่วนใหญ่เป็นฐานข้อมูลเฉพาะภาษา พวกเขาพยายามที่จะจัดการกับวัตถุที่สัมพันธ์ไม่ตรงกันในรูปแบบที่ง่ายกว่า ORMs


8
การเข้าถึงฐานข้อมูลในคางทูม .... SK = 0 FSK = $ O (^ VA (200, K)) Q: 'KW $ P (^ VA (200, K, 0), U, 1),! พิมพ์ชื่อผู้ป่วยจากระบบคางทูมที่รู้จักกันดี แก้ไขปัญหา? ไม่ค่อยเท่าไหร่.
joshp

ฉันมีเพื่อนร่วมงานที่สาบานโดย MUMPS รุ่นที่ใหม่กว่า (แคช) มีไวยากรณ์ที่เข้าถึงได้มากกว่า
Alexey

2
@Alexey: ฉันไม่ทราบมากเกี่ยวกับ MUMPs แต่ดูเหมือนว่าปัญหาที่ใหญ่กว่าไวยากรณ์คือกฎการกำหนดขอบเขตข้อผิดพลาดซึ่งทำให้การพัฒนาและการบำรุงรักษาของโปรแกรมขนาดใหญ่เป็นฝันร้าย
Doc Brown

@DocBrown ที่นั่นคุณมีมันอย่างแน่นอน กฎการกำหนดขอบเขตเป็นเหมือนภาษาแอสเซมบลี มีปัญหามากมายเกี่ยวกับวิธีที่คางทูมเขียนโดยทั่วไปว่ามันเป็นเพียงการเบี่ยงเบนความสนใจจากคำถามของ OP
joshp

5

มีหลายระบบที่รวมฐานข้อมูลและภาษาการเขียนโปรแกรมไว้ในสภาพแวดล้อมเดียว

Smalltalk น่าจะใกล้เคียงที่สุดกับสิ่งที่คุณอธิบาย วัตถุในหน่วยความจำยังคงอยู่ใน "ภาพ" เพื่อให้สภาพแวดล้อมภาษาสามารถใช้ฐานข้อมูล (วัตถุ) ออกจากกล่อง และภาษาที่ทันสมัยส่วนใหญ่มีกลไกการคงอยู่ในตัวซึ่งหมายความว่าวัตถุในสภาพแวดล้อมภาษาสามารถคงอยู่และถูกสอบถามโดยใช้ภาษานั้นเอง

สะดวกมากสำหรับแอปพลิเคชันผู้ใช้รายเดียว แต่วิธีการดังกล่าวจะไม่ขยายไปยังผู้ใช้หลายคนเนื่องจากพวกเขาจะต้องใช้พื้นที่หน่วยความจำร่วมกันซึ่งเห็นได้ชัดว่าเป็นการ จำกัด จำนวนผู้ใช้ โซลูชันที่ปรับขนาดได้ต้องใช้เซิร์ฟเวอร์ฐานข้อมูลแยกต่างหากซึ่งจัดการการทำงานพร้อมกัน แม้ว่าจะมีหลายฐานข้อมูล NoSql ซึ่งรวมกับสภาพแวดล้อมภาษาเฉพาะและช่วยให้คุณยังคงมีอยู่และวัตถุแบบสอบถามในภาษาของตัวเอง

จากด้านสัมพันธ์ของสิ่งที่เรามีภาษาเช่น T-SQL ซึ่งเป็นภาษาโปรแกรมเต็มรูปแบบซึ่งเป็น superset ของ SQL ดังนั้นการสอบถามและ DML สามารถผสมกับตรรกะขั้นตอนที่ซับซ้อนโดยพลการ แอปพลิเคชันทางธุรกิจที่ซับซ้อนได้รับการสร้างขึ้นโดยใช้ T-SQL ดังนั้นจึงเป็นสิ่งที่สามารถทำได้อย่างแน่นอน แต่แนวโน้มในปัจจุบันคือตรรกะทางธุรกิจขั้นตอนที่ไม่ได้อยู่ในฐานข้อมูล

ในกรณีเหล่านี้เป็นจริงอย่างหรูหราและสะดวกสบายที่มีฐานข้อมูลรวมกับภาษาการเขียนโปรแกรมและหลีกเลี่ยง "ความต้านทานไม่ตรงกัน" ดังนั้นทำไมผู้คนยังคงใช้ฐานข้อมูลเชิงสัมพันธ์แยกจากสภาพแวดล้อมการเขียนโปรแกรมและพยายามเชื่อมโยงกับ ORM-kludge

ปรากฎว่ามีข้อได้เปรียบมากมายในการมีข้อมูลและการสืบค้นแยกต่างหากจากภาษาโปรแกรมและสภาพแวดล้อมเฉพาะ

  • ความเป็นอิสระของข้อมูล ในองค์กรส่วนใหญ่ข้อมูลจริงเข้าถึงได้จากหลายแอพ ร้านค้าอาจมีฐานข้อมูลที่ใช้โดยส่วนหน้าของเว็บโดยเครื่องมือสนับสนุนลูกค้าเครื่องมือสร้างรายงานและอื่น ๆ ข้อมูลมักมีอายุการใช้งานยาวนานในขณะที่แอปพลิเคชั่นมาและไป การรวมข้อมูลเข้ากับสภาพแวดล้อมการเขียนโปรแกรมเฉพาะจะเป็นการล็อคอินกับสภาพแวดล้อมการเขียนโปรแกรมเฉพาะ แต่ภาษาการเขียนโปรแกรมมาและไปขณะที่ข้อมูลอยู่ตลอดไป
  • เฉพาะกิจการสืบค้น มันสะดวกมากที่จะสามารถเปิดพร้อมท์ฐานข้อมูลและเขียนแบบสอบถาม หากการสอบถามนั้นเชื่อมโยงกับสภาพแวดล้อมการเขียนโปรแกรมอย่างแน่นหนานี่จะเป็นงานการเขียนโปรแกรมและนักพัฒนาเท่านั้นที่จะสามารถทำได้
  • หลีกเลี่ยงการล็อคอิน เนื่องจาก SQL เป็นมาตรฐานผู้ค้าหลายรายอาจให้ระบบการจัดการฐานข้อมูลที่ใช้แทนกันได้ไม่มากก็น้อย สิ่งนี้หลีกเลี่ยงผู้ขายล็อคในและทำให้ง่ายต่อการเปรียบเทียบผลิตภัณฑ์
  • คลัปหลวม การมีอินเตอร์เฟสที่กำหนดไว้อย่างดีระหว่างแอ็พพลิเคชันเลเยอร์และฐานข้อมูลทำให้สามารถปรับแต่งและปรับฐานข้อมูลให้เหมาะสมโดยไม่ขึ้นอยู่กับตรรกะของแอปพลิเคชัน
  • อินเตอร์เฟสที่แบ่งใช้ เนื่องจากส่วนต่อประสานฐานข้อมูลนั้นไม่ขึ้นอยู่กับตรรกะของแอพพลิเคชั่นเครื่องมือที่ไม่ได้วางจำหน่ายจึงสามารถใช้สำหรับการทำโปรไฟล์การทำซ้ำการวิเคราะห์และอื่น ๆ

2

มันเป็นคำถามที่ดีทีเดียวที่ฉันประมวลผลในหัวของฉันหลายครั้ง ตัวอย่างหนึ่งของการแก้ปัญหาที่มีอยู่ในการแก้ปัญหาของคุณคือ ArangoDB ฐานข้อมูลกราฟที่คุณใช้ JavaScript (ทำงานบนเอ็นจิ้นภายใน) เพื่อเขียนคอนโทรลเลอร์ที่สามารถสร้างเว็บเพจทั้งหมด ข้อมูลถูกส่งผ่านไปยัง / จากที่เก็บข้อมูลโดยใช้ JSON ดังนั้นจึงสามารถเข้าถึงได้ใน JavaScript และการสืบค้นจะทำในภาษาคิวรีแบบฝัง ดังนั้นกรณีนี้เป็นตัวอย่างของการขยาย JavaScript เพื่อให้ทำงานในฐานข้อมูล

ในทางปฏิบัติตัวควบคุมดังกล่าวไม่ควรเปิดเผยต่อสาธารณะด้วยเหตุผลด้านความปลอดภัยเนื่องจากข้อบกพร่องในการกำหนดค่าฐานข้อมูลหรือข้อผิดพลาดจะส่งผลให้เปิดเผยข้อมูลอันมีค่าของคุณสู่สาธารณะ

ในความเห็นส่วนตัวของฉันนี่เป็นวิธีการที่ดีและการพิจารณาว่าฐานข้อมูลรองรับชนิดของแผนที่ / ลดคุณสมบัติซึ่งจะอัปเดตข้อมูลรวม / ดัชนีข้อความและข้อมูลอื่น ๆ ที่พบบ่อยในเวลาจริงการเพิ่มเลเยอร์ความปลอดภัยบาง ๆ ระหว่าง (เรียกว่าโหลด balancer) จะทำให้แอปพลิเคชันทำงานได้ทำงานในฐานข้อมูลแบบกระจาย


1
  1. สร้างขึ้นจริงเช่นระบบแบบครบวงจร

ใช่ฉันไม่ว่าในSciter

สคริปต์ของ Sciter คือ " JavaScript ++ " ที่มีอยู่ในตัว:

var ndb = Storage.open(pathname);
ndb.root = { ... root object ... };

ที่ndb.rootเป็นวัตถุปกติในแง่ของ JS คุณสมบัติและวัตถุย่อยทั้งหมดที่สามารถเข้าถึงได้นั้นสามารถเก็บได้และเก็บไว้ในฐานข้อมูลเมื่อจำเป็น - โปร่งใสสำหรับรหัส:

ndb.root.accounts[2].firstName = "John";
var name = ndb.root.accounts[3].firstName;

ข้อมูลถูกเก็บไว้ในฐานข้อมูลทั้งในวงจร GC เมื่อหน่วยความจำไม่เพียงพอหรือในการndb.commit()โทรอย่างชัดเจน

Storageclassมาพร้อมกับIndexclass - คอลเลกชันวัตถุที่สั่งซื้อได้แบบคงที่พร้อมด้วยคีย์ที่ไม่ซ้ำกัน / ไม่ซ้ำกัน

ชุดคุณสมบัติคล้ายกับ MongoDB หรือฐานข้อมูล NoSQL อื่น ๆ แต่ id ไม่ต้องการ ORM แยกต่างหาก - การเข้าถึง db นั้นทำโดยใช้วิธีการที่แท้จริง


0

สำหรับฉันอย่างแน่นอนและฉันไม่รู้ว่าจะเริ่มต้นอย่างไร SQL สามารถยอดเยี่ยมและฉันคิดว่ามันจะดีถ้ามีพลังงานและการทำธุรกรรมรับประกันในภาษาการเขียนโปรแกรมอเนกประสงค์ของคุณ (แทนที่จะต้องเขียนแบบสอบถามเป็นชุดของสตริงหรือการใช้พระเจ้าห้าม ORM)

ระบบเดียวที่เข้าใกล้ความคิดของคุณที่ฉันรู้จักเรียกว่า aquameta (แท็กบรรทัด: "web dev stack ที่สร้างขึ้นใน PostgreSQL"; ดูhttps://github.com/aquametalabs/aquameta , http://aquameta.org ) มีวิดีโอแนะนำบางส่วนที่ไม่บ้าไปกว่าความคิด (youtube.com/watch?v=jz74upW7TN0, youtube.com/watch?v=cWGm9eYUYUk&t=29s, youtube.com/watch?v=xRoUQGUMMG) และเมื่อฉันบอกว่าบ้าฉันหมายความว่าพวกเขาใช้เครื่องมือแก้ไขและระบบควบคุมเวอร์ชันของตัวเองใน Postgres


0

ฉันคิดว่านี่เป็นเหตุผลที่แท้จริงสำหรับการประดิษฐ์ LINQ ของ Microsoft มันใช้การผลิตเต็มรูปแบบมาหลายปีแล้วดังนั้นจึงง่ายต่อการค้นหาวรรณกรรมเกี่ยวกับมันและการสะท้อนจากประสบการณ์จริงทั้งเชิงบวกและเชิงลบ (ร้านค้าพัฒนา. net ส่วนใหญ่โอบกอดมัน)

จุดเริ่มต้นที่ดีสำหรับ linq: https://docs.microsoft.com/en-us/dotnet/csharp/linq/



Linq-to-SQL เป็นองค์ประกอบของ ORM ซึ่งไม่ใช่สิ่งที่ OP ต้องการโดยเฉพาะ
JacquesB

ฉันไม่ได้พูด linq-to-sql ฉันพูดถึง linq เท่านั้นซึ่งสร้างขึ้นในภาษาการเขียนโปรแกรมผู้ไม่เชื่อเรื่องที่เก็บข้อมูลอยู่ด้านหลังซึ่งเป็นสิ่งที่ OP ต้องการ
Clay Fowler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.