2015-10-27 62 views
0

我使用實體框架代碼優先。 我正在嘗試創建一個名爲OfferSequence的新實體,以便在數據庫中自動創建該表。實體框架代碼優先,錯誤:「EntityType'OfferSequence'沒有定義鍵」

的問題是,當我嘗試用新的實體來更新數據庫,我收到以下錯誤

One or more validation errors were detected during model generation:

ERP.EnterpriseDataAccessLayer.EnterpriseData.OfferSequence: : EntityType 'OfferSequence' has no key defined. Define the key for this EntityType. OfferSequences: EntityType: EntitySet 'OfferSequences' is based on type 'OfferSequence' that has no keys defined.

然而,正如你可以看到下面,關鍵是clearily對物業SequenceStart

定義
public class OfferSequence : IEntity<OfferSequence> 
{ 
    public OfferSequence(uint sequenceStart, uint incrementalCounter, uint annualIncrementalCounter) 
    { 
     Validate.EnsureIsTrue(incrementalCounter >= sequenceStart && annualIncrementalCounter >= sequenceStart, "Counters can not be lower than sequence start"); 

     SequenceStart = sequenceStart; 
     IncrementalCounter = incrementalCounter; 
     AnnualIncrementalCounter = annualIncrementalCounter; 
     LastUpdateDate = DateTime.UtcNow; 
    } 

    [Key] 
    public uint SequenceStart { get; private set; } 

    public uint IncrementalCounter { get; private set; } 

    public uint AnnualIncrementalCounter { get; private set; } 

    public DateTime LastUpdateDate { get; private set; } 

    public OfferSequence Clone() 
    { 
     OfferSequence copy = new OfferSequence(SequenceStart, IncrementalCounter, AnnualIncrementalCounter); 

     return copy; 
    } 

    object ICloneable.Clone() 
    { 
     return Clone(); 
    } 

    public void Modify(OfferSequence obj) 
    { 
     AnnualIncrementalCounter = obj.AnnualIncrementalCounter; 
     IncrementalCounter = obj.IncrementalCounter; 
     LastUpdateDate = DateTime.UtcNow; 
    } 
} 
+0

你沒有無參數的構造函數,不確定EF可以處理這種情況。 – tschmit007

回答

3

看來,你不能用一個unsigned int作爲實體框架的關鍵:我沒有什麼官方的,說這一點,但在this question答案表明,它一樣,this one

編輯:實際here是EF團隊對此的官方詞彙。這就是他們所說的:

EF Team Triage: Unsigned integers are not supported by EFs internal model that it uses to store metadata. We should consider supporting them, or having a way to deal with types that aren't explicitly supported.

The error message could definitely be improved here and is a symptom of our rule that Code First just ignores any properties of unsupported types. We could detect this situation and provide a better message.

Given where we are in the EF6 release we aren't going to change anything now. Moving to Future to consider for upcoming releases.