Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用TypeID作为属性和条件的每个层次结构的实体框架表_Asp.net Mvc_Entity Framework_Entity Framework 4_Jstree_Table Per Hierarchy - Fatal编程技术网

Asp.net mvc 使用TypeID作为属性和条件的每个层次结构的实体框架表

Asp.net mvc 使用TypeID作为属性和条件的每个层次结构的实体框架表,asp.net-mvc,entity-framework,entity-framework-4,jstree,table-per-hierarchy,Asp.net Mvc,Entity Framework,Entity Framework 4,Jstree,Table Per Hierarchy,我正在使用实体框架+mvc实现一个域树结构。 我使用JSTree来表示组织结构 请注意,在该模型方案中,我使用TypeID属性作为继承的条件和DomainEntity的属性。 这类corse会引发以下错误: 错误3错误3032:映射从第行开始的片段时出现问题 139:具有条件的条件成员“DomainEntities.EntityTypeID” 映射的不是“IsNull=False”。或者删除上的条件 DomainEntities.EntityTypeID或将其从映射中删除。 C:\Code\C

我正在使用实体框架+mvc实现一个域树结构。 我使用JSTree来表示组织结构

请注意,在该模型方案中,我使用TypeID属性作为继承的条件和DomainEntity的属性。 这类corse会引发以下错误:

错误3错误3032:映射从第行开始的片段时出现问题 139:具有条件的条件成员“DomainEntities.EntityTypeID” 映射的不是“IsNull=False”。或者删除上的条件 DomainEntities.EntityTypeID或将其从映射中删除。 C:\Code\CamelotShiftManagement\CamelotShiftManagement\Models\CamelotDB.edmx 140 15 CamelotShiftManagement

假设我不会将TypeID用作属性,并将其作为继承关联的条件,当我尝试填充域实体的树时,将导致以下结果:

            foreach (var entity in entities)
            {
                JsTreeModel tree = new JsTreeModel()
                {
                    attr = new JsTreeAttribute() 
                    { 
                        id = entity.EntityID.ToString(),

                    },
                    data = entity.EntityName
                };

                if (entity is OrganizatioanlUnit)
                {
                    tree.attr.type = eNodeType.OrganizationalUnit;
                }
                if (entity is Calendar)
                {
                    tree.attr.type = eNodeType.Calendar;
                }

                PopulateTree(entity, tree);
                io_Node.children.Add(tree);
            }
此代码不可维护,因为当引入新实体时,如果我只能访问一个属性,该属性将告诉我正在处理的实体类型,我将不得不更改此代码..:)

这是一个难题: 如果我使用Inheritations和TypeID作为每个继承的条件,我无法将其作为DomainEntity的属性访问,这将要求我使用switch case反对typof(entity)来确定我应该发送给我的JSTree插件的类型,因为他希望他的JSON中的每个节点都有一个类型标识,如果我不使用继承,我将失去多态功能


这不仅仅是我想要的。。还有其他只与继承实体相关的方法和属性,我可以看到未来的一些注入点…

您给出的示例与类型或类型Id的选择相关吗?OMG。。。你的权利那是个错误。。。我会立刻改变它!!!抱歉..什么是
eNodeType
?在本例中,您只需执行
tree.attr.type=entity.GetType().Name.Well eNodeType是一个枚举,表示我拥有的不同节点类型“{Root,OrganizationalUnit,Calendar}”。。。您建议我根据表示实体模型的实际类来命名类型?。。这很有趣,它可能会起作用。。这是一种常见的做法吗?我不知道这种情况下的常见做法,但是如果您需要一个标识符来保持类型之间的差异,这一个当然可以。