我们正在使用Breeze与实体框架6.为了隔离我们的租户,我们使用EF拦截器几乎完全像这篇文章建议的那样(http://xabikos.com/multitenant/application%20design/software%20as%20a%20service/2014/11/17/create-a-multitenant-application-with-entity-framework-code-first---part-1.html)。因此,在创建新实体时,将通过IDbCommandTreeInterceptor在服务器上填充OrganizationId。但我们发现,当数据更新时,即使在数据库中正确设置了值,Breeze也不会在SaveResult中返回更新的数据。这是JSON的一个子集(通过Fiddler捕获)。
{
"$id":"1",
"$type":"Breeze.ContextProvider.SaveResult, Breeze.ContextProvider",
"Entities":[
{
"$id":"2",
"$type":"Ce.Business.Contacts.ContactEntity, Ce.Business",
"ContactId":32,
"EventId":"a1dcac14-4332-e511-8269-5cc5d46d497f",
"Event":null,
"FirstName":"Test",
"LastName":"User1",
"WebsiteUrl":null,
"OrganizationId":"00000000-0000-0000-0000-000000000000"
}
],
"KeyMappings":[
{
"$id":"12",
"$type":"Breeze.ContextProvider.KeyMapping, Breeze.ContextProvider",
"EntityTypeName":"Ce.Business.Contacts.ContactEntity",
"TempValue":-1,
"RealValue":32
}
],
"Errors":null
}
您可以看到OrganizationId是一个空的GUID,即使它在服务器上设置正确。有什么我们需要做的让Breeze返回拦截器改变的值吗?我原以为Breeze会从数据库中返回值而不是它认为的值。