2013-04-14 20 views
6

Tôi đang sử dụng EF 4 trong ứng dụng web của mình.Cách giải quyết EF: Vi phạm thời gian tiềm ẩn của bảng

đây là bảng có liên quan của tôi:

**AppToDomains_V1 ** 
GroupId uniqueidentifier 
AppGuid uniqueidentifier 

**Apps table** 
AppName nvarchar(50) 
AppGuid uniqueidentifier 
ClientAppID nvarchar(50) 
IsDeleted  bit 
CreatedDate datetime 
UpdatedDate datetime 

và edmx tôi:

http://ge.tt/17n6R2e/v/0?c

tôi nhận được lỗi sau:

Error 2 Error 3002: Problem in mapping fragments starting at line 1565:Potential runtime violation of table AppToDomains_V1's keys (AppToDomains_V1.AppId, AppToDomains_V1.Domain): Columns (AppToDomains_V1.AppId, AppToDomains_V1.Domain) are mapped to EntitySet AppToDomains_V1's properties (AppToDomains_V1.AppId, AppToDomains_V1.Domain) on the conceptual side but they do not form the EntitySet's key properties (AppToDomains_V1.AppId, AppToDomains_V1.Domain, AppToDomains_V1.IsWhiteListed). D:\MaM\Server\MamAdmin\Dev\Admin 1.7\MaMDBEntityFramework\MaMModel.edmx 1566 15 MaMDBEntityFramework

Làm thế nào tôi có thể giải quyết này?

D: \ MAM \ Server \ MamAdmin \ Dev \ Admin

1.7\MaMDBEntityFramework\MaMModel.edmx 1566 15 is:

 <EntitySetMapping Name="AppToDomains_V1"> 
     <EntityTypeMapping TypeName="MaMDBModel.AppToDomains_V1"> 
      <MappingFragment StoreEntitySet="AppToDomains_V1"> 
      <ScalarProperty Name="IsWhiteListed" ColumnName="IsWhiteListed" /> 
      <ScalarProperty Name="Domain" ColumnName="Domain" /> 
      <ScalarProperty Name="AppId" ColumnName="AppId" /> 
      </MappingFragment> 
     </EntityTypeMapping> 
     </EntitySetMapping> 
+0

Có lý do tại sao thuộc tính Miền và IsWhiteListed được đặt làm Khóa thực thể không? –

+0

Thêm ảnh chụp màn hình ánh xạ của bạn. Bạn sẽ có nhiều khả năng nhận được một số câu trả lời. Hầu hết người dùng ở đây sẽ không tải xuống mô hình của bạn và mở nó trong VS. –

+0

@RobG Bạn có thể giải thích khóa thực thể là gì không? nó là khóa chính? Nhưng dù sao, khóa chính phải là Miền ứng dụng. Vì điều này sẽ tồn tại một lần ở mức tối đa. Làm thế nào tôi nên sửa chữa những gì bạn đề nghị? –

Trả lời

14

Tôi biết điều này là một thời gian dài trước đây, nhưng nó vẫn còn hiển thị trên công cụ tìm kiếm, vì vậy đây là thỏa thuận này.

Lỗi 3002 cho biết có sự không khớp giữa mô hình và cơ sở dữ liệu thực tế như với khóa chính cho bảng. Ví dụ, cơ sở dữ liệu có thể chỉ có một trường ID duy nhất làm khóa chính, nhưng trong mô hình nó có hai hoặc nhiều cột được đánh dấu là một phần của khóa chính. Khi tôi gặp lỗi này, mô hình đã đánh dấu tất cả các trường không phải là rỗng, khóa ngoài là một phần của khóa chính, không chính xác.

Để khắc phục, hãy chuyển đến mô hình, định vị bảng, đánh dấu mọi trường được đánh dấu sai là một phần của khóa chính và thay đổi thuộc tính "Thuộc tính khóa" thành sai. Biên dịch lại và lỗi sẽ biến mất.

Điều này phù hợp với tôi.

+0

Nó thực sự tiết kiệm thời gian của tôi ... – gTiancai

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