我有以下内容:
public abstract class InputBase
{
public virtual ICollection<Data> Data { get; set; }
}
public class InputA: InputBase { }
public class InputB: InputBase { }
public abstract class Data
{
public virtual InputA InputA { get; set; }
public virtual InputB InputB { get; set; }
}
InputA 和 InputB 都使用 InputBase 的数据集合。
数据将始终具有 InputA 和 InputB 的实例。
我尝试通过以下方式将其链接起来:
modelBuilder.Entity<Data>()
.HasRequired(data => data.InputA)
.WithMany(input => input.Data)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Data>()
.HasRequired(data => data.InputB)
.WithMany(input => input.Data)
.WillCascadeOnDelete(false);
modelBuilder.Entity<InputA>()
.HasRequired(input => input.Data)
.WithRequired(data => data.InputA)
.WillCascadeOnDelete(false);
modelBuilder.Entity<InputB>()
.HasRequired(input => input.Data)
.WithRequired(data => data.InputB)
.WillCascadeOnDelete(false);
但是,我收到 MetaDataException,错误 0040:类型 Data_InputA 未在命名空间中定义(...)
我怎样才能使这项工作?我不想在输入衍生品上创建单独的数据集合,因为这在逻辑上是不正确的。