我正在尝试访问在客户端新创建的服务器端的导航属性。
数据模型。
public class Foo
{
public string ID { get; set; } //Primary key
public string Status { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
public class Bar
{
public string ID { get; set; } //Foreign Key
public string Notes { get; set; }
}
在客户端: 我已经有了父对象(id 123),我正在创建一个新的子对象
function changeParentAndChild(foo){
foo.Status = 'Closed';
var barnotes = em.createEntity('Bar', { ID: 123});
barnotes.Notes = 'Sample text';
foo.Bars.push(barnotes);
}
使用manager.saveChanges();
在服务器端保存数据
BeforeSaveEntitiesDelegate += PerformPreSaveValidation()
public Dictionary<Type, List<EntityInfo>> PerformPreSaveValidation(Dictionary<Type, List<EntityInfo>> saveMap)
{
foreach (Type entityType in saveMap.Keys)
{
if (entityType.Name == "Foo")
{
foreach (EntityInfo ei in saveMap[entityType])
{
Foo objFoo = ((Foo)ei.Entity);
switch (objFoo.Status)
{
case "Closed":
//access parent id and status
string id = objFoo.ID;
string status = objFoo.Status
//access navigation property
string barnotes = objFoo.Bars.Last().Notes;
//invoke external method
Externalmethod(is,status,Notes)
break;
default:
break;
}
}
}
}
return saveMap;
}
当我通过savemap循环并尝试访问导航属性时。我看到它是空的。但是saveMap有两个条目,一个是父Foo,另一个是子Bars
该应用程序使用:
Breezejs: Version: "1.4.7", metadataVersion: "1.0.5"
EF6
ASP.net
web api
Angular
谢谢, 拉吉夫。
答案 0 :(得分:0)
breeze.contextprovider.nh现在支持名为BeforeSaveEntityGraph的覆盖。 这还没有发布,所以你需要从github下载。 目前尚不支持EF版本。 问题是导航属性尚未被保存过程“修复” 并且在修复后你无法做任何事情。