只读属性作为EF Core 2中的键

时间:2019-03-14 20:52:09

标签: entity-framework

我希望EF Core 2接受只读属性作为Key。请考虑以下模型:

public class Session
{
    public string Key => $"{ClientDomain}:{SessionId}";

    public string ClientDomain { get; private set; }

    public string SessionId { get; private set; }
}

流动剂映射代码:

modelBuilder.Entity<Session>().HasKey(e => e.Key);

尝试添加迁移时,出现错误消息:“找不到实体类型为'Session'的属性'Key'的后备字段,并且该属性没有设置器。”

我如何才能在EF Core 2中实现这种映射,而不必仅仅为了EF而不必更改模型类?

1 个答案:

答案 0 :(得分:1)

如果您的Key属性基于ClientDomainSessionId返回唯一值,那么创建复合主键似乎是合理的

modelBuilder
    .Entity<Session>()
    .HasKey(s => new { s.ClientDomain, s.SessionId });