使用未映射的属性

时间:2016-12-05 13:57:58

标签: c# asp.net sql-server entity-framework breeze

我正在处理的实体模型按照继承结构构建:

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在某种程度上;想要'欺骗'实体框架在思考未映射的值时会在创建实体时进行映射。

0 个答案:

没有答案