【发布时间】:2015-05-29 02:09:27
【问题描述】:
假设我有一个通用记录表(我首先使用的是 EF 代码),并且可以有许多不同类型的详细信息可用于此表:
class Record{
int Id,
int TypeOfDetails, // int enum Type1, Type2
string Details, //string with json content
string Attribute 1,
string Atribute 2,
...
}
class DetailsType1{
string InternalAtribute1,
....
}
我决定使用 Json 将 Details 对象序列化到数据库字段中。 这允许在不更改数据库架构的情况下灵活处理不同的详细信息。
处理一个记录很容易,我知道 Details 对象的类型,所以我可以序列化和反序列化。
但是如何有效地检索多条记录并能够在 MVC 中引用详细信息? 假设我这样做:
var results = await context.Record.Where(..).ToAsyncList();
我希望能够在我的 .cshtml 中执行此操作:
@Html.DisplayFor(modelItem => item.Record.Details.InternalAtribute1)
基本上它会在运行中进行反序列化..
或者,如果在 AngularJS 中可以实现类似的功能,它也会有所帮助。
如果我对我的问题说清楚了,请告诉我。
【问题讨论】:
-
不清楚你想要实现什么。你能更详细地解释一下你想在
Details字段中保存什么吗? -
我想将对象 DetailsType1 保存为 json。可能还有DetailsType2和DetailsType3,所以我可以根据情况使用它们。
-
为了说明我的第一个想法是: 1. 将 Object DetailsExpanded 字段添加到 [NoMapped] 的 Record 类中,这样就不会转到 db。然后创建将详细信息反序列化到此属性中的方法...不是很优雅也不是很有效,因为我需要循环执行此方法..
标签: c# asp.net-mvc angularjs entity-framework json.net