2013-04-14 61 views
6

我在我的web應用程序中使用EF 4。如何解決EF:潛在的運行時間違規表

這裏是我的相關表格:

**AppToDomains_V1 ** 
GroupId uniqueidentifier 
AppGuid uniqueidentifier 

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

和我的EDMX:

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

我得到以下錯誤:

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

我怎樣才能解決這個問題?

d:\ MAM \服務器\ MamAdmin \開發\管理員

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

是否有理由將Domain和IsWhiteListed屬性設置爲實體鍵? –

+0

添加您的映射的屏幕截圖。你很可能會得到一些答案。這裏的大多數用戶不會去下載你的模型並在VS中打開它。 –

+0

@RobG你能解釋什麼是實體密鑰?它是主鍵嗎?無論如何,主鍵應該是應用程序域。因爲這應該存在一次最大。我應該如何解決你的建議? –

回答

14

我知道這是很久以前的事,但它仍然顯示在搜索引擎了,所以這裏的交易。

3002錯誤表明模型和實際數據庫之間存在關於表的主鍵不匹配。例如,數據庫可能只有一個ID字段作爲主鍵,但在模型中它有兩列或更多列標記爲主鍵的一部分。當我有這個錯誤時,模型已經將所有非空的外鍵字段標記爲主鍵的一部分,這是不正確的。

要修復,請進入模型,找到表格,突出顯示錯誤標記爲主鍵一部分的每個字段,並將「實體鍵」屬性更改爲false。重新編譯,錯誤應該消失。

這對我有效。

+0

這真的節省了我的時間... – gTiancai

相關問題