如何创建派生类的Breeze实体?

如何创建派生类的Breeze实体?,breeze,Breeze,在具有简单TPH继承结构的breeze模型中,我无法正确创建子类型的新breeze实体 例如: public class Vehicle { public string Name { get; set; } public byte VehicleType { get; set; } } public class Car : Vehicle { // Some extra properties } 鉴别器不遵循使用字符串值确定类的父级的标准实体框架方法,因此我们使用一些

在具有简单TPH继承结构的breeze模型中,我无法正确创建子类型的新breeze实体

例如:

public class Vehicle
{
    public string Name { get; set; }
    public byte VehicleType { get; set; }
}

public class Car : Vehicle
{
    // Some extra properties
}
鉴别器不遵循使用字符串值确定类的父级的标准实体框架方法,因此我们使用一些EF FluentAPI来修改元数据:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Vehicle>()
                .Map<Car>(m => m.Requires("VehicleType").HasValue((byte)1));
}
尽管这似乎是关于Breeze客户端组件行为的问题,但我们使用Breeze存储到一个数据库中可能是相关的,该数据库不是通过实体框架访问的(我们只是生成EF元数据供Breeze使用)

我认为客户端代码不必担心继承鉴别器的实现,因此希望在创建每个对象时有一种替代方法来手动设置值


正确存储鉴别器值的最佳方法是什么?

我能够验证带字节鉴别器值的TPH是否有效。我注意到我的模型和你的模型之间的唯一区别是我没有在我的模型中指定byte属性

public abstract class Airplane
{
    public int Id { get; set; }
    public string Name { get; set; }
    //public byte AirplaneType { get; set; }  //Not required
}

public class Boeing : Airplane
{
    public string Model { get; set; }
}

在Fluent API中指定鉴别器足以让EF保存正确的值。

谢谢。我不知道这是可选的,但没有你的建议,一切都会很完美。
public abstract class Airplane
{
    public int Id { get; set; }
    public string Name { get; set; }
    //public byte AirplaneType { get; set; }  //Not required
}

public class Boeing : Airplane
{
    public string Model { get; set; }
}