0

したがって、私は非常に正規化されたモデルを持っており、エンティティ フレームワーク オブジェクトを使用する MVC4 で単一ページ アプリケーションを作成しようとしています。私の問題は、必要な種類の複雑なマッピングを使用して EF でエンティティを作成できないことです (複数のガイドを確認しましたが、異なる主キーを含む複数のテーブルから 1 つのエンティティを作成できないようです..更新可能なビューを使用する解決策を見つけましたが、それは実際には抽象化を db レイヤーにプッシュしているだけです)。

したがって、EFクエリを使用してオブジェクトを作成し、挿入/更新/削除時にPOCOデータを取得して、基になる3つのテーブルを更新できるPOCOオブジェクトを作成できると考えました。

さて、何が起こっているのかを知るために、既存の動作中のコントローラーを微調整しようとして障害にぶつかりました。

次のような 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 をクロールしてきましたが、どこで失敗しているのかさえ明確ではありません。任意の入力をいただければ幸いです。

4

1 に答える 1

1

発生している問題は、標準の EF の代わりに POCO を使用しているという事実に関連しています。クラスをシリアル化可能として認識しない 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 に答える