所以我有一个非常规范化的模型,我试图在 MVC4 中创建一个想要使用实体框架对象的单页应用程序。我的问题是我无法使用我需要的那种复杂映射在 EF 中创建一个实体(我已经检查了多个指南,但我似乎无法从包含不同主键的多个表中创建一个实体.. .我找到了一个使用可更新视图的解决方案,但这实际上只是将抽象推到了数据库层)。
所以我想我可以使用 EF 查询创建一个 POCO 对象来创建对象,然后在插入/更新/删除时,我可以获取 POCO 数据并更新底层的 3 个表。
好吧,我只是试图调整现有的工作控制器以尝试了解正在发生的事情,因此遇到了障碍。
假设我有一个工作的 SPA 控制器,看起来像这样:
public partial class FooController : DbDataController<aspnetEntities>
{
public IQueryable<Foos> GetFoos() { ... }
}
我只是稍微改变一下以返回我的新 POCO 数据对象 Bar,让我们想象它目前与 Foo 具有完全相同的字段:
public partial class FooController : DbDataController<aspnetEntities>
{
public IQueryable<Bars> GetBars() { ... }
}
在 FooViewModel.js 中,我将操作名称更新为 GetBars,并将类型从
var entityType = "Foo:#Models";
到
var entityType = "Bar:#Models";
我直接点击我的操作,我得到:
老的
<ArrayOfFoo><Foo><Property>true</Property></Foo></ArrayOfFoo>
新的
<ArrayOfBar><Bar><Property>true</Property></Bar></ArrayOfBar>
所以控制器看起来给了我我期望的东西,但是当我尝试把整个东西放在一起时,SPA 会闪现:
在使用本地名称“__type”编写属性之后,您必须编写一个属性“type”=“object”。
我猜我需要以某种方式将类型数据输入 KO?我不确定那可能在哪里,但是我已经在 JS 中爬行了好几个小时,但我什至不清楚它在哪里失败了。任何投入将不胜感激。