2008-09-11 26 views
12

Có ai thực sự đã chuyển một dự án khung thực thể mà không ánh xạ O/R vào các lớp khái niệm khác với các bảng trong kho dữ liệu không?Bất kỳ ai sử dụng Khung thực thể * Vâng *?

Ý tôi là sụp đổ ngã ba (M: M) bảng vào đơn vị khác để tạo thành Conceptual lớp tồn tại trong lĩnh vực kinh doanh nhưng được tổ chức như nhiều bảng trong kho dữ liệu. Tất cả các ví dụ mà tôi thấy trên MSDN có rất ít sử dụng thừa kế, sụp đổ các bảng giao nhau thành các thực thể khác, hoặc thu hẹp các bảng tra cứu thành các thực thể.

Tôi muốn nghe hoặc xem các ví dụ dưới đây có hỗ trợ tất cả các hoạt động CRUD bạn thường sẽ mong đợi để làm trên một đối tượng kinh doanh .:

  1. bảng xe và một bảng màu. Màu sắc có thể xuất hiện trong nhiều Xe (1: M). Chúng tạo thành lớp khái niệm UsedCar có thuộc tính Color.

  2. Bảng Doctor, DoctorPatients và bệnh nhân (tạo thành nhiều từ nhiều đến nhiều). Các bác sĩ có nhiều bệnh nhân, bệnh nhân có thể có nhiều bác sĩ (M: M). Lập bản đồ ra hai lớp khái niệm Bác sĩ (có bộ sưu tập Bệnh nhân) và Bệnh nhân (trong đó có một bộ sưu tập Doctors).

Bất cứ ai nhìn thấy/làm điều này với CSDL VÀ SSDL trong khung Entity? CSDL là không tốt nếu nó không actaully bản đồ đến bất cứ điều gì!

Trả lời

5

Tôi đã cố gắng sử dụng khung Entity trên một dự án hiện có (~ 60 bảng, 3 với thừa kế) chỉ để xem tất cả những gì về nó. Trải nghiệm của tôi được chia nhỏ xuống:

Bề mặt thiết kế là kludgy. Ánh xạ không trực quan và ai đó phải nghĩ rằng có nhiều cửa sổ công cụ mở cùng một lúc là chấp nhận được. Phải mất một thời gian dài để tự tạo một đối tượng và ánh xạ các trường bên phải - sau đó nó vẫn còn lạ khi nói chuyện với nó từ mã. Trong khi có một cái gì đó xử lý giao tiếp cơ sở dữ liệu là điều cần thiết, Tôi cảm thấy rằng việc bàn giao quyền kiểm soát đối với EF là nhiều hơn một cuộc chiến hơn là làm theo cách thủ công.

Đôi khi, nhà thiết kế không tải cho đến khi bạn khởi động lại Visual Studio. Tôi chắc chắn nó chỉ là một lỗi nhưng khởi động lại VS là gây phiền nhiễu.

Tất cả công việc của bạn kết thúc trong một tệp, tôi ghét phải hợp nhất nhiều ấn bản nhà phát triển.

SQL kết quả (xem qua Profiler) không tốt lắm. Tôi đã không thực sự tìm hiểu lý do tại sao, nhưng bạn sẽ bị ép viết một thứ tồi tệ hơn trong lần thử đầu tiên.

+0

Đây có phải gần đây hoặc trong quá trình beta? Tôi đã có một trải nghiệm beta khá chua mà không thực sự làm tôi phấn khích về EF. – Tyler

+0

Ngay sau khi tôi có thể cài đặt bản phát hành SP1 trên máy tính của tôi và ném một giờ vào nó. – Ant

2

Ý bạn là như thế này?

<edmx:ConceptualModels> 
    <Schema xmlns="http://schemas.microsoft.com/ado/2006/04/edm" Namespace="Model1" Alias="Self"> 
    <EntityContainer Name="Model1Container" > 
     <EntitySet Name="ColorSet" EntityType="Model1.Color" /> 
     <EntitySet Name="DoctorSet" EntityType="Model1.Doctor" /> 
     <EntitySet Name="PatientSet" EntityType="Model1.Patient" /> 
     <EntitySet Name="UsedCarSet" EntityType="Model1.UsedCar" /> 
     <AssociationSet Name="Vehicle_Color" Association="Model1.Vehicle_Color"> 
     <End Role="Colors" EntitySet="ColorSet" /> 
     <End Role="Vehicles" EntitySet="UsedCarSet" /></AssociationSet> 
     <AssociationSet Name="DoctorPatient" Association="Model1.DoctorPatient"> 
     <End Role="Doctor" EntitySet="DoctorSet" /> 
     <End Role="Patient" EntitySet="PatientSet" /></AssociationSet> 
     </EntityContainer> 
    <EntityType Name="Color"> 
     <Key> 
     <PropertyRef Name="ColorID" /></Key> 
     <Property Name="ColorID" Type="Int32" Nullable="false" /> 
     <NavigationProperty Name="Vehicles" Relationship="Model1.Vehicle_Color" FromRole="Colors" ToRole="Vehicles" /></EntityType> 
    <EntityType Name="Doctor"> 
     <Key> 
     <PropertyRef Name="DoctorID" /></Key> 
     <Property Name="DoctorID" Type="Int32" Nullable="false" /> 
     <NavigationProperty Name="Patients" Relationship="Model1.DoctorPatient" FromRole="Doctor" ToRole="Patient" /></EntityType> 
    <EntityType Name="Patient"> 
     <Key> 
     <PropertyRef Name="PatientID" /></Key> 
     <Property Name="PatientID" Type="Int32" Nullable="false" /> 
     <NavigationProperty Name="Doctors" Relationship="Model1.DoctorPatient" FromRole="Patient" ToRole="Doctor" /> 
     </EntityType> 
    <EntityType Name="UsedCar"> 
     <Key> 
     <PropertyRef Name="VehicleID" /></Key> 
     <Property Name="VehicleID" Type="Int32" Nullable="false" /> 
     <NavigationProperty Name="Color" Relationship="Model1.Vehicle_Color" FromRole="Vehicles" ToRole="Colors" /></EntityType> 
    <Association Name="Vehicle_Color"> 
     <End Type="Model1.Color" Role="Colors" Multiplicity="1" /> 
     <End Type="Model1.UsedCar" Role="Vehicles" Multiplicity="*" /></Association> 
    <Association Name="DoctorPatient"> 
     <End Type="Model1.Doctor" Role="Doctor" Multiplicity="*" /> 
     <End Type="Model1.Patient" Role="Patient" Multiplicity="*" /></Association> 
    </Schema> 
</edmx:ConceptualModels> 
+0

Điều này có vẻ tốt. Nó luôn luôn được lập bản đồ rằng CSDL vào SSDL mà tôi đã tự hỏi. SSDL bắt đầu ở đâu?Tôi đoán tôi tự hỏi nếu điều này đơn giản hơn chúng tôi mô tả các thực thể với CSDL trên một bề mặt thiết kế trống. Nó luôn luôn là bản đồ đó là một câu hỏi với tôi. – Tyler

Các vấn đề liên quan