繁体   English   中英

我的关键属性不是Guid类型,而是其中包含Guid的自定义引用类型

[英]My key property is not a Guid type but a custom reference type with a Guid in it

我有一个域模型,说在此类内的Contract我具有Id属性,但这不是简单的Guid类型,而是ContractId类型。

public class Contract 
{
    public ContractId Id {get; set; }
}

和我代码中的其他地方:

public class ContractId 
{
    public Guid Id { get; set; }

    public ContractId(){}
    public ContractId(Guid id){ Id=id; }
}

现在在我的DbContext中,我需要说说什么属性是我的关键属性。

modelBuilder.Entity<Contract>()
.HasKey(k => k.Id)
.ToTable("Contract", "Catalog");

尽管我没有编译时间错误,但由于我无法将ContractId用作Key属性,所以这会在运行时激怒。 然后,我考虑过指定HasKey(k => k.Id.Id)因为这是有效的Guid,但仍然存在问题。 我能做什么?

您不能在实体中使用复杂类型作为Key 毫无疑问,这是EF局限性 。您实体的键必须是原始类型,并且必须在同一类中声明为它们。 最常见的键成员是intGUID类型,尽管任何原始类型都可以用作键属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM