更新从OrientDB中的ORestricted继承的文档

时间:2015-11-03 16:41:39

标签: c# orm orientdb

我在OrientDB中创建了一个实现记录级安全性的类:

create class material;  
alter class  material superclass +ORestricted;  
alter class  material strictmode true;  

create property material.mat_ref string;  
alter property  material.mat_ref mandatory true;  
create property material.mat_locked boolean;
alter property  material.mat_locked mandatory true;  
create property material.mat_active boolean;  
alter property  material.mat_active mandatory true;  
...

我尝试使用OrientDB.NET将此类映射到C#类:

   public class Material : ODocument
    {
        public Material()
        {
            base.OClassName = GetType().Name.ToLower();
        }

        public string Reference
        {
            get { return GetField<string>("mat_ref"); }
            set { SetField<string>("mat_ref", value); }
        }
   ...
   }

然后我从群集中获取记录:

var _mat = _db.Select().From<Material>().Where("mat_ref").Like("A%").ToList<Material>().First();

编辑映射对象的任何字段后,我想更新数据库中的相关记录:

_mat.Reference = "12345";
_db.Update<Material>(_mat).Run();

生成一个像这样的SQL查询字符串:

UPDATE #18:0 SET mat_ref = '12345', mat_locked = False, mat_active = True, _allow = System.Collections.Generic.HashSet`1[System.Object] 

&#39; _allow&#39;从ORestricted(类型Hashset)继承的属性显然被错误地序列化并在运行时抛出异常:

com.orientechnologies.orient.core.sql.OCommandSQLParsingException: Error on parsing command at position #0: Error parsing query:...

我知道我可以避免序列化&#39; _allow&#39;通过仅更新已更改的属性,但我想使其变得通用。难道我做错了什么?有没有解决方法?

0 个答案:

没有答案