我首先使用Entity Framework代码。 我正在尝试创建一个名为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;
}
}
答案 0 :(得分:3)
看来你不能在实体框架中使用unsigned int作为关键字:我没有任何官方说明这一点,但this question上的答案表明它,this one也是如此。
编辑:实际上here是EF团队关于此的官方消息。这就是他们所说的:
EF Team Triage:EFs内部不支持无符号整数 用于存储元数据的模型。我们应该考虑支持 他们,或者有办法处理非明确的类型 支撑。
这里肯定可以改进错误消息,这是一个症状 我们的规则,Code First只是忽略任何不受支持的属性 类型。我们可以检测到这种情况并提供更好的信息。
鉴于我们在EF6版本中的位置,我们不会改变 什么现在。转向未来考虑即将发布的版本。