Breezejs BeforeSaveEntitiesDelegate:无法访问Navigation属性

时间:2014-01-28 18:51:48

标签: c# angularjs breeze

我正在尝试访问在客户端新创建的服务器端的导航属性。

数据模型。

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

谢谢, 拉吉夫。

1 个答案:

答案 0 :(得分:0)

breeze.contextprovider.nh现在支持名为BeforeSaveEntityGraph的覆盖。 这还没有发布,所以你需要从github下载。 目前尚不支持EF版本。 问题是导航属性尚未被保存过程“修复” 并且在修复后你无法做任何事情。