我正在处理的实体模型按照继承结构构建:
public abstract class Line {}
public class WooLine : Line{
public bool wooProperty{ get; set; }
}
public class BooLine : Line
这些都存储在表Line的数据库中。在数据库中,列wooProperty为NOT NULL且默认值为(0)。
这些是在使用Knockout& amp;微风。当使用BooLine尝试创建一个新实体时,它会抛出一个异常,我无法在列wooProperty中插入NULL。
我设置了一个用于跟踪查询的配置文件,看起来因为它已映射到Line表,所以在Insert EntityFramework期间读取所有属性并尝试将NULL实际插入到wooProperty中,因为它& #39;在Boo模型中不存在。我有点不高兴,EF正在积极尝试将NULL插入我不能使用的属性...
反正。我无法将wooProperty移动到Line模型 - 它属于WooLine模型。我希望通过修改Breeze中的元数据或将wooProperty强制转换为saveChanges数据来解决它。但我无法轻易识别元数据中的属性。我试过了
metadataStore.registerEntityTypeCtor(
'BooLine', function () {
this.wooProperty = false;
});
几乎可以使用 - 但是Breeze将其映射为__unmapped值,因此在被EntityFramework接收后无法识别。
我也开始玩重写EFContextProvider并覆盖BeforeSaveEntity。实体是BooLine类型的ReadOnly,我可以在UnmappedProperties中清楚地看到WooProperty,但我不知道从那里去哪里......有什么想法吗?
TLDR在某种程度上;想要'欺骗'实体框架在思考未映射的值时会在创建实体时进行映射。