我有以下型号:
public class Session
{
public string Id { get; set; }
public IList<SessionWorkspace> Workspaces { get; } = new List<SessionWorkspace>();
}
public class SessionMeasurement
{
public SessionMeasurement(Session session, string measurement)
{
Session = session;
Measurement = measurement;
}
public string Id { get; set; }
public Session Session { get; }
public string Measurement { get; }
}
但我正在努力配置它们而不出现错误。
当我这样做时:
modelBuilder
.Entity<Session>(entityBuilder =>
{
entityBuilder
.HasMany(s => s.Workspaces)
.WithOne(sw => sw.Session);
});
modelBuilder.Entity<SessionWorkspace>(entityBuilder =>
{
entityBuilder
.Property(sw => sw.Session);
entityBuilder
.Property(sw => sw.Workspace);
});
我收到错误:
System.InvalidOperationException:“Session”不能用作实体类型“SessionWorkspace”的属性,因为它被配置为导航。
但是当我不将 Session 配置为这样的属性时:
modelBuilder
.Entity<Session>(entityBuilder =>
{
entityBuilder
.HasMany(s => s.Workspaces)
.WithOne(sw => sw.Session);
});
modelBuilder.Entity<SessionWorkspace>(entityBuilder =>
{
entityBuilder
.Property(sw => sw.Workspace);
});
我收到此错误:
System.InvalidOperationException:“找不到实体类型“SessionWorkspace”的合适构造函数。以下构造函数的参数无法绑定到实体类型的属性:无法绑定“SessionWorkspace(Session session, stringworkspace)”中的“session”。
那么我是否正确配置了通过构造函数传递的只读导航属性?