Breeze 微风:';不可为null的DataProperty不能具有null defaultValue。名称:未定义';

Breeze 微风:';不可为null的DataProperty不能具有null defaultValue。名称:未定义';,breeze,geography,Breeze,Geography,错误取决于我的SQL Server db中的地理类型字段。此字段不可为空,并且具有默认属性。 我试图将JsonIgnore属性添加到此字段,但它仍然存在于元数据中,并且出现以下错误: breeze/BreezeMyPlace/Metadata的元数据导入失败;无法处理返回的元数据:不可为null的DataProperty不能具有null defaultValue。名称:未定义。 我正在使用nuget软件包“Breeze for ASP.NET Web API projects v.1.3.3”、

错误取决于我的SQL Server db中的地理类型字段。此字段不可为空,并且具有默认属性。 我试图将JsonIgnore属性添加到此字段,但它仍然存在于元数据中,并且出现以下错误: breeze/BreezeMyPlace/Metadata的元数据导入失败;无法处理返回的元数据:不可为null的DataProperty不能具有null defaultValue。名称:未定义。 我正在使用nuget软件包“Breeze for ASP.NET Web API projects v.1.3.3”、Entity Framework 5.0、JSon.NET 5.0.5等。 如何防止此字段的序列化?
谢谢

属性告诉JSON格式化程序在序列化过程中忽略该属性,但它仍然是EF模型的一部分,并且它仍然出现在从
DbContext
生成的元数据中。序列化和元数据是不同的关注点

通过将EDM
[NotMapped]
属性添加到模型中的属性,可以将其从元数据中隐藏

如果您不想触碰您的模型,您可以通过
DbContext
中的流畅配置告诉EF忽略它,例如

modelBuilder.Entity<Customer>().Ignore(t => t.CustomerID_OLD); modelBuilder.Entity().Ignore(t=>t.CustomerID\u OLD); 如果您需要该属性在服务器逻辑中可访问但对Breeze元数据隐藏,则可以创建一个专用的
MetadataDbContext
,该属性继承自您的工作
DbContext
,并将“忽略”代码放在其中。有关示例,请参见DocCode中的
NorthwindMetadataContext

提醒:通常,您只能对EF隐藏可为空的属性。这将在您的情况下起作用,因为不可为null的属性具有在数据库架构中定义的默认值。否则,数据库将拒绝插入。

谢谢,我也读了,所以NorthwindMetadataContext是我的正确示例。现在我遇到了麻烦,因为我使用的是数据库优先的方法,而onmodelcreating并没有被调用。。。