C# 首先是实体框架代码,错误:";EntityType';报价顺序';“未定义密钥”;

C# 首先是实体框架代码,错误:";EntityType';报价顺序';“未定义密钥”;,c#,entity-framework,C#,Entity Framework,我首先使用实体框架代码。 我试图创建一个名为OfferSequence的新实体,以便在数据库中自动创建表 问题是,当我尝试用新实体更新数据库时,会出现以下错误 在模型生成过程中检测到一个或多个验证错误: ERP.EnterpriseDataAccessLayer.EnterpriseData.OfferSequence:: EntityType“OfferSequence”未定义键。为此定义密钥 EntityType。OfferSequences:EntityType:EntitySet“Off

我首先使用实体框架代码。 我试图创建一个名为OfferSequence的新实体,以便在数据库中自动创建表

问题是,当我尝试用新实体更新数据库时,会出现以下错误

在模型生成过程中检测到一个或多个验证错误:

ERP.EnterpriseDataAccessLayer.EnterpriseData.OfferSequence:: EntityType“OfferSequence”未定义键。为此定义密钥 EntityType。OfferSequences:EntityType:EntitySet“OfferSequences”为 基于未定义键的“OfferSequence”类型

但是,正如您在下面看到的,键在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;
    }
}
public类OfferSequence:Entity
{
公开发行序列(单位序列开始、单位递增计数器、单位年度递增计数器)
{
Validate.EnsureIsTrue(incrementalCounter>=sequenceStart&&annualIncrementalCounter>=sequenceStart,“计数器不能低于sequenceStart”);
SequenceStart=SequenceStart;
IncrementalCounter=IncrementalCounter;
AnnualIncrementalCounter=AnnualIncrementalCounter;
LastUpdateDate=DateTime.UtcNow;
}
[关键]
public uint SequenceStart{get;private set;}
public uint IncrementalCounter{get;private set;}
public uint AnnualIncrementalCounter{get;private set;}
public DateTime LastUpdateDate{get;private set;}
公开发行序列克隆()
{
报价序列副本=新报价序列(SequenceStart、IncrementalCounter、AnnualIncrementalCounter);
返回副本;
}
对象ICloneable.Clone()
{
返回克隆();
}
公共无效修改(OfferSequence obj)
{
AnnualIncrementalCounter=obj.AnnualIncrementalCounter;
IncrementalCounter=obj.IncrementalCounter;
LastUpdateDate=DateTime.UtcNow;
}
}

看来您不能在实体框架中使用未签名的int作为键:我没有任何官方的说法,但一个关于它的答案建议您这样做

编辑:实际上是英孚团队对此的官方说法。他们是这么说的:

EF团队分类:EFs内部不支持无符号整数 它用来存储元数据的模型。我们应该考虑支持。 或者有办法处理不明确的类型 支持

错误消息在这里肯定可以得到改进,这是一种症状 我们的规则是,代码首先忽略不受支持对象的任何属性 类型。我们可以检测到这种情况并提供更好的信息

考虑到我们在EF6版本中的位置,我们不会改变 现在什么都可以。移动到未来,考虑即将发布的版本。


似乎您不能在实体框架中使用无符号int作为键:我没有任何官方的说法,但一个答案表明这一点,事实也是如此

编辑:实际上是英孚团队对此的官方说法。他们是这么说的:

EF团队分类:EFs内部不支持无符号整数 它用来存储元数据的模型。我们应该考虑支持。 或者有办法处理不明确的类型 支持

错误消息在这里肯定可以得到改进,这是一种症状 我们的规则是,代码首先忽略不受支持对象的任何属性 类型。我们可以检测到这种情况并提供更好的信息

考虑到我们在EF6版本中的位置,我们不会改变 现在什么都可以。移动到未来,考虑即将发布的版本。


似乎您不能在实体框架中使用无符号int作为键:我没有任何官方的说法,但一个答案表明这一点,事实也是如此

编辑:实际上是英孚团队对此的官方说法。他们是这么说的:

EF团队分类:EFs内部不支持无符号整数 它用来存储元数据的模型。我们应该考虑支持。 或者有办法处理不明确的类型 支持

错误消息在这里肯定可以得到改进,这是一种症状 我们的规则是,代码首先忽略不受支持对象的任何属性 类型。我们可以检测到这种情况并提供更好的信息

考虑到我们在EF6版本中的位置,我们不会改变 现在什么都可以。移动到未来,考虑即将发布的版本。


似乎您不能在实体框架中使用无符号int作为键:我没有任何官方的说法,但一个答案表明这一点,事实也是如此

编辑:实际上是英孚团队对此的官方说法。他们是这么说的:

EF团队分类:EFs内部不支持无符号整数 它用来存储元数据的模型。我们应该考虑支持。 或者有办法处理不明确的类型 支持

错误消息在这里肯定可以得到改进,这是一种症状 我们的规则是,代码首先忽略不受支持对象的任何属性 类型。我们可以检测到这种情况并提供更好的信息

考虑到我们在EF6版本中的位置,我们不会改变 现在什么都可以。移动到未来,考虑即将发布的版本。


您没有无参数构造函数,不确定EF是否可以处理此情况。您没有无参数构造函数,不确定EF是否可以处理此情况。您没有无参数构造函数,不确定EF是否可以处理此情况。您没有无参数构造函数,不确定EF是否可以处理此情况。