非原始类型作为实体ID

时间:2019-06-07 15:33:14

标签: c# domain-driven-design

在EF core 2.2中尝试使用非原始类型作为主键时遇到问题。据我了解,应该可以通过使用值转换器来实现。

我有一个Match实体:

y

MatchId包含单个Guid属性

public class Match  {
    public MatchId Id { get; set }
    public string HomeTeam { get; private set; }
    public string AwayTeam { get; private set; }
    ....
}

我的EF匹配配置如下所示,其中Id属性映射到MatchId类型。

public class MatchId : ValueObject {
    public Guid Value { get; set; }

    public MatchId() {
        Value = Guid.NewGuid();
    }

    public MatchId(Guid value) {
        Value = value;
    }
    ....

运行时的结果

public void Configure(EntityTypeBuilder<Match> builder)
{            
    builder.HasKey(e => e.Id);                                             
    builder.Property(e => e.Id).HasConversion(v => v.Value, v => new MatchId(v)); 
}

dotnet ef migrations add InitialCreate

这不可能吗?如果是这样,我想念什么?

谢谢。

0 个答案:

没有答案