1

マネージャにエンティティを追加したいと考えています。マネージャーは私の MasterViewmodel に保存されており、ノックアウトで作業しています。

Error: Cannot attach an object to an EntityManager without first setting its key or setting its entityType 'AutoGeneratedKeyType' property to something other than 'None'

私のコード:

var item = {           
        GuidUser: masterViewModel.UserID,
        GuidProject: ProjectID,
        Start: startTime,
        End: stopTime,
        Description: workDone,
        IdCustomer: null,
        timestampId: null,
        Charged: false,
        ToCharge: toCharge,
        };
var item2 = masterViewModel.breezeProjectManager().createEntity('Timestamp', item);
masterViewModel.breezeProjectManager().addEntity(item2);

しかし、キーを設定する方法は?

4

2 に答える 2

1

次のことを試してください。

var item2 = masterViewModel.breezeProjectManager()
           .createEntity('item', { timestampId: breeze.core.getUuid() });
于 2014-03-09T13:07:12.043 に答える
0

EntityType が最初に定義されるとき、「isPartOfKey」プロパティが true に設定された DataProperty が少なくとも 1 つ必要です。EntityType のメタデータは、メタデータがサーバーから返された結果として具体化されるか、クライアントで作成されます。いずれの場合も、「EntityType」メタデータは、そのタイプのエンティティを作成する前に作成する必要があります。

私の推測では、最初にエンティティを作成しようとしたとき、まだメタデータを取得していないか、メタデータを作成していません。あなたの場合、エンティティを作成する前に fetchMetadata 呼び出しを行うことができます。すなわち

breezeProjectManager().metadataStore.fetchMetadata().then(function() {
   .. perform your creation and add logic here.
}

もう 1 つの可能性は、'isPartOfKey' = true で定義されているフィールドが、'addEntity' を呼び出す前に null 以外の値に設定されていないことです。

于 2013-04-02T17:55:48.163 に答える