Entity Framework 4 / POCO - Bắt đầu từ đâu? [đóng cửa]


183

Tôi đã lập trình được một thời gian và đã sử dụng LINQ-To-SQL và LINQ-To-Ent trước đó (mặc dù khi sử dụng các thực thể, nó đã có mối quan hệ Thực thể / Bảng 1-1 - tức là không khác nhiều so với L2Query)

Tôi đã đọc rất nhiều về Inversion of Control, Unit of Work, POCO và các mẫu kho lưu trữ và muốn sử dụng phương pháp này trong các ứng dụng mới của tôi.

Trường hợp tôi đang vật lộn là tìm một hướng dẫn cho người mới bắt đầu rõ ràng, súc tích cho EF4 mà không thừa nhận kiến ​​thức về EF1.

Các câu hỏi cụ thể tôi cần trả lời là:

Mã đầu tiên / mô hình đầu tiên? Ưu / nhược điểm liên quan đến EF4 (nghĩa là điều gì xảy ra nếu tôi làm mã trước, thay đổi mã vào một ngày sau đó và cần tạo lại mô hình DB của tôi - Dữ liệu có được bảo toàn và biến đổi hoặc bị hủy không?)

Giả sử tôi đi mã đầu tiên (Tôi muốn xem cách EF4 chuyển đổi nó thành lược đồ DB) làm thế nào để tôi thực sự bắt đầu? Rất thường xuyên tôi đã thấy các bài viết có sơ đồ thực thể ghi "Vì vậy, đây là mô hình thực thể của tôi, bây giờ tôi sẽ ..." - Thật không may, tôi không rõ liệu họ có tạo ra mô hình trong trình thiết kế hay không, đã lưu nó vào tạo mã sau đó dừng bất kỳ quá trình tạo mã tự động nào nữa - hay họ đã mã hóa (POCO)? các lớp và bằng cách nào đó đã nhập chúng vào khung nhìn deisgner?

Tôi cho rằng điều tôi thực sự cần là sự hiểu biết về "ma thuật" đến từ đâu và làm thế nào để tự thêm nó nếu tôi không chỉ tạo ra một mô hình EF trực tiếp từ DB.

Tôi biết câu hỏi hơi mơ hồ nhưng tôi không biết những gì tôi không biết - Vì vậy, bất kỳ đầu vào / chỉnh sửa / làm rõ nào đều được đánh giá cao.

Không cần phải nói, tôi không mong đợi bất cứ ai ngồi đây và dạy tôi EF - Tôi chỉ muốn một số hướng dẫn / diễn đàn / blog / vv tốt. cho người mới thực thể hoàn thành


3
hãy thực sự cẩn thận với thời gian kết nối của bạn: bit.ly/fi83NV Đó là điều bạn thực sự cần lưu ý khi trừu tượng hóa bối cảnh vào kho lưu trữ. Nó có vẻ như đang hoạt động nhưng thực sự đang dần tăng tốc kết nối ngày càng mở
BritishDeveloper 17/03/2016

@BRitishDeveloper - Lời khuyên rất tốt. Điều này thực sự đã thu hút chúng tôi nhưng theo cách ngược lại - Chúng tôi đang sử dụng bộ chứa IoC để truy xuất kho lưu trữ và có một vấn đề trong đó bối cảnh được gán cho kho lưu trữ sẽ đóng kết nối sau một thời gian nhưng sẽ không được gắn cờ là bị xử lý / giống. Cuối cùng chúng tôi đã mở rộng bối cảnh với một IsDisposed () đã kiểm tra với trạng thái xử lý thông thường và trạng thái kết nối cho phép chúng tôi xây dựng một bối cảnh khác nếu được yêu cầu.
Cơ bản

Một mẹo hữu ích khác là khi nhận được một bối cảnh mới, các đối tượng được liên kết với bối cảnh cũ sẽ không có theo dõi thay đổi phù hợp và sẽ gây ra các sự cố khớp ngữ cảnh - Vì vậy, nếu bạn có một ứng dụng chạy dài và thay đổi bối cảnh giữa thực hiện, bạn cần phải lấy lại tất cả các thực thể của bạn. Để làm cho nó thú vị hơn, chúng tôi thực sự đã phải có 2 lần chạy song song và cuối cùng đã viết một số mã để ánh xạ giữa 2 thứ độc đáo ...
Basic

1
@Basiclife Tôi gặp phải vấn đề tương tự :) Tôi đã có ý định viết ra những suy nghĩ của mình về việc cập nhật các thực thể tách rời trong một thời gian và bạn chỉ khuyến khích tôi làm điều đó: britishdeveloper.co.uk/2011/03/
Anh

Câu trả lời:


56

Những bài viết này có thể được quan tâm ... loạt bài thực sự nhận được những ưu điểm và nhược điểm của phương pháp POCO.

http://bloss.msdn.com/b/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx

http://bloss.msdn.com/b/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading. aspx

http://bloss.msdn.com/b/adonet/archive/2009/06/10/poco-in-the-entity-framework-part-3-change-tracking-with-poco.aspx

Trong các bài viết này, tác giả đề cập đến các bài viết trong tương lai mô tả các thực tiễn tốt nhất trong việc triển khai các mẫu Kho lưu trữ và Đơn vị công việc, nhưng tôi không thể tìm thấy chúng. Những bài viết này được viết tốt và tôi muốn đọc thêm từ tác giả này.


2
Vì ai đó đã cảm thấy thoải mái với Entity Framework khi sử dụng trình thiết kế, đây là phần giới thiệu tuyệt vời cho POCO.
nathanchere

1
Nếu bạn đang tìm kiếm Đơn vị công việc, hãy theo dõi tại blog.msdn.com/b/adonet/archive/2009/06/16/ợi
Mike

11

Tôi đã bắt gặp điều này: http://bloss.msdn.com/adonet/pages/feature-ctp-walkENC-code-only-for-the-entity-framework.aspx

Cung cấp cho bạn từng bước cho mã đầu tiên. Nó yêu cầu CTP 3 cho EF4 (Tải xuống được liên kết từ bài viết đó).

Điều này khá gần với những gì tôi đã theo đuổi (mặc dù lý tưởng là một giải pháp không dựa vào CTP sẽ được ưu tiên hơn)


Lưu ý: CTP này ban đầu dành cho VS2010 Beta nhưng cũng hỗ trợ VS2010 RTM.
Cơ bản

7

Tôi khuyên bạn nên mất nửa giờ hoặc lâu hơn và tạo một mô hình EF1.0 ổn định trong VS hiện tại của bạn. Điều đó sẽ giúp bạn có một chặng đường dài hướng tới việc hiểu các ẩn dụ và khái niệm về EF 4.0. Chỉ cần đánh cắp một Khách hàng, Sản phẩm và Đơn hàng đơn giản ... Tôi khuyên bạn nên tự làm và không sử dụng Northwind.


4

Đây là một câu hỏi hay, nhưng khó để cập nhật khi Entity Framework tiếp tục trưởng thành. Có lẽ nơi tốt nhất để bắt đầu cập nhật trong tương lai là trang EF của Microsoft .

Một vài liên kết khác tôi thấy hữu ích trong khi Googling (tập trung vào Code First):


3

Bạn có thể lấy sách của Lerman hoặc một cái gì đó đơn giản hơn như "Bản đồ quan hệ đối tượng Pro linq". Tất cả các khái niệm vẫn giống với POCO, ngoại trừ việc bây giờ bạn nên vô hiệu hóa việc tạo mã và ánh xạ trực tiếp đến mô hình của mình trong edmx csdl (hoặc tạo trình tạo POCO của riêng bạn). Tất cả các nguyên tắc ánh xạ cũng giống nhau. Dù sao trong thời gian chạy bạn đang làm việc với proxy có nguồn gốc từ đối tượng POCO của bạn, do đó bạn nên quan tâm đến hỗ trợ đánh chặn (ảo hóa các thuộc tính POCO của bạn).


3

Cấu trúc dự án của anh ấy trông giống như một dự án dựa trên nHibernate cũ mà tôi đang làm. Cept cho tất cả các nhạc jazz WCF, mà tôi muốn làm mới bản thân mình. Liên kết vững chắc.
Merritt

2

Đây là một hướng dẫn trên Mẫu POCO cho Khung thực thể trông khá tốt. Bạn cũng có thể muốn xem blog của nhóm ADO.NET . Nếu bạn muốn bắt đầu từ đầu (EF v1.0) làm cơ sở cho kiến ​​thức về EF của bạn, tôi đã tìm thấy cuốn sách Khung thực thể lập trình của Julia Lerman rất đầy đủ.


Cảm ơn - Tôi đã không thấy cuốn sách nhưng tôi đã đọc cả các liên kết được cung cấp. Hướng dẫn mẫu rất hữu ích trong việc giải thích cách có thể thêm chức năng bổ sung vào các đối tượng POCO sau khi chúng được xác định (ví dụ: Tải nhanh) nhưng (và tôi có thể thiếu một cái gì đó rõ ràng ở đây) nó không thực sự giải thích cách bắt đầu (nghĩa là đơn giản tạo một lớp như được chỉ định không làm cho nó trở thành một thực thể cũng như không liên kết nó với một mô hình) Tôi đã có trải nghiệm tương tự với blog. Tôi sẽ xem xét nhận cuốn sách mặc dù - Nó có vẻ đầy hứa hẹn - Cảm ơn bạn.
Cơ bản

2
Về cuốn sách của Julia Lerman, đáng để đề cập rằng cô ấy đang làm việc trên một ấn bản thứ hai bao gồm EF4: learnentityframework.com/LearnEntityFramework/book/ đấm . Tôi nhớ rằng tôi đã đọc ở đâu đó rằng ngày xuất bản dự kiến ​​là vào tháng Năm năm nay nhưng tôi không thể tìm thấy nguồn nữa. Ngoài ra tôi chỉ tìm thấy trang web này: nudeobjects.net/home/index2.shtml
Slauma

Slauma, liên kết bạn cung cấp trông ike chính xác những gì tôi cần - ngoại trừ việc sử dụng thư viện "Khỏa thân trần trụi" của bên thứ 3 dường như đang che giấu sự phức tạp bằng cách nào đó - Trong một phút, tôi nghĩ rằng bạn đã bẻ khóa nó
Basic


1

Julia Lerman có một loạt các video giới thiệu hay , mỗi video khoảng 10 phút. Chúng mang tính giới thiệu, nhưng có rất nhiều lời khuyên thiết thực giúp bạn tránh được những trở ngại học tập tiềm năng. Tôi đặc biệt thích phần trình diễn của cô ấy khi xem SQL thực tế bằng cách sử dụng SQL Server Profiler.


1

Nếu bạn định sử dụng các cenario bị ngắt kết nối, tôi khuyên bạn nên đọc cuốn sách của Julie Lerman: "Lập trình DbContext", trong Chương 4 đặc biệt.

Tôi đã tìm thấy rất nhiều ví dụ trong blog, v.v., nhưng hầu như tất cả chúng đều là về các kịch bản được kết nối.

Tôi cũng đang bắt đầu. và những cuốn sách này đã giúp tôi rất nhiều. Nhân tiện, tôi đã mua cho cô ấy ba cuốn sách.



0

Wow, rất nhiều câu trả lời. Làm thế nào về một ví dụ chứa phiên bản tinh chỉnh của các mẫu T4 tạo giao diện POCO + + kho lưu trữ hoàn toàn?

https://entityinterfacegenerator.codeplex.com


Thú vị và tiện dụng để thử nghiệm các kho / bối cảnh, nhưng tại sao bạn lại cần phải trừu tượng hóa các thực thể? Theo định nghĩa, họ không nên có bất kỳ mã chức năng nào bên trong chúng.
Cơ bản

Bạn nói đúng. Hầu hết, mọi người sẽ không cần phải có giao diện riêng. Nhưng nó giúp những người muốn giải quyết các tham chiếu vòng tròn và muốn chia sẻ các giao diện, chứ không phải các lớp thực tế, với bên thứ ba. Điều này sẽ giúp ích rất nhiều nếu công ty của bạn cần vượt qua cuộc kiểm toán với sự tích hợp của bên thứ 3 mà không yêu cầu thực hiện chi tiết trong việc chia sẻ.
Tin tưởng2014
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.