0

所以我有一个非常规范化的模型,我试图在 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?我不确定那可能在哪里,但是我已经在 J​​S 中爬行了好几个小时,但我什至不清楚它在哪里失败了。任何投入将不胜感激。

4

1 回答 1

1

您遇到的问题与您使用 POCO 而不是标准 EF 的事实有关。它应该与无法将类识别为可序列化的 webapi 序列化程序有关。无论如何,这是一个将在 RC 中删除的错误。看看这个线程的解决方法: http ://forums.asp.net/t/1773173.aspx/1?You+must+write+an+attribute+type+object+after+writing+the+attribute+with +本地+名称+__类型+

于 2012-04-15T17:57:31.393 回答