2015-10-27 64 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.