Breeze:'一个不可以为空的DataProperty不能有一个null defaultValue。名称:undefined'

时间:2013-05-22 14:22:56

标签: breeze geography

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

1 个答案:

答案 0 :(得分:0)

[JsonIgnore]属性告诉JSON格式化程序在序列化期间忽略该属性,但它仍然是EF模型的一部分,它仍然出现在从DbContext生成的元数据中。序列化和元数据是不同的问题。

您可以通过将EDM [NotMapped]属性添加到模型中的属性来隐藏元数据。

如果您不想触摸您的模型,可以通过DbContext中的Fluent配置告知EF忽略它,例如,

modelBuilder.Entity<Customer>().Ignore(t => t.CustomerID_OLD);

如果您需要在服务器逻辑中访问该属性但从Breeze元数据中隐藏,则可以创建一个继承自您的工作MetadataDbContext的专用DbContext并在其中放置“忽略”代码。有关示例,请参阅DocCode中的NorthwindMetadataContext

提醒:通常,您只能隐藏EF中的可空属性。这将适用于您的情况,因为非可空属性具有在数据库模式中定义的默认值。否则,数据库将拒绝插入。