我希望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而不必更改模型类?
答案 0 :(得分:1)
如果您的Key
属性基于ClientDomain
和SessionId
返回唯一值,那么创建复合主键似乎是合理的
modelBuilder
.Entity<Session>()
.HasKey(s => new { s.ClientDomain, s.SessionId });