在未映射的数据库中创建实体 属性
Creating entity in database with unmapped property
我正在处理的实体模型的结构继承如下:
public abstract class Line {}
public class WooLine : Line{
public bool wooProperty{ get; set; }
}
public class BooLine : Line
这些都存储在数据库中的table行。在数据库中,列 wooProperty 不是 NULL 和默认值 (0)。
这些在使用 Knockout & Breeze 编写的网络应用程序中维护。当使用 BooLine 尝试创建一个新实体时,它会抛出一个异常,我无法将 NULL 插入列 wooProperty。
我设置了一个配置文件来跟踪查询,看起来因为它映射到行 table,在插入期间 EntityFramework 读取所有属性并尝试实际插入 NULL进入 wooProperty,因为它不存在于 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;想要 'trick' entity framework 考虑在创建实体时映射未映射的值。
为了总结我的意见,我推荐以下其中一项:
使您的模型使用 TPT 继承,因此 Line
table 中没有 wooProperty
列,但在继承的 WooLine
table
将您的 wooProperty
列更改为可为空并将实体 class 中的 wooProperty
属性 标记为 [Required]
并让EF 只负责读取 "valid WooLine
s" - 如果还有一个有效的鉴别器列供 EF 使用
,这应该有效
我正在处理的实体模型的结构继承如下:
public abstract class Line {}
public class WooLine : Line{
public bool wooProperty{ get; set; }
}
public class BooLine : Line
这些都存储在数据库中的table行。在数据库中,列 wooProperty 不是 NULL 和默认值 (0)。
这些在使用 Knockout & Breeze 编写的网络应用程序中维护。当使用 BooLine 尝试创建一个新实体时,它会抛出一个异常,我无法将 NULL 插入列 wooProperty。
我设置了一个配置文件来跟踪查询,看起来因为它映射到行 table,在插入期间 EntityFramework 读取所有属性并尝试实际插入 NULL进入 wooProperty,因为它不存在于 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;想要 'trick' entity framework 考虑在创建实体时映射未映射的值。
为了总结我的意见,我推荐以下其中一项:
使您的模型使用 TPT 继承,因此
Line
table 中没有wooProperty
列,但在继承的WooLine
table将您的
wooProperty
列更改为可为空并将实体 class 中的wooProperty
属性 标记为[Required]
并让EF 只负责读取 "validWooLine
s" - 如果还有一个有效的鉴别器列供 EF 使用 ,这应该有效