Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/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
C# 在实体框架4中包装导航属性_C#_Database_Entity Framework_Code Generation_Edmx - Fatal编程技术网

C# 在实体框架4中包装导航属性

C# 在实体框架4中包装导航属性,c#,database,entity-framework,code-generation,edmx,C#,Database,Entity Framework,Code Generation,Edmx,假设我有一个数据库表节点 该表包含(除其他属性外)作为自引用FK的ParentID属性 从该数据库表创建的实体框架模型包含两个导航属性: public EntityCollection<Node> ChildrenNodes { get { return Node1; } set { Node1 = value; } } public Node ParentNode { get {

假设我有一个数据库表
节点

该表包含(除其他属性外)作为自引用FK的
ParentID
属性

从该数据库表创建的实体框架模型包含两个导航属性:

public EntityCollection<Node> ChildrenNodes 
{
    get
    {
        return Node1;
    }
    set
    {
        Node1 = value;
    }
}

public Node ParentNode 
{
    get
    {
        return Node2;
    }
    set
    {
        Node2 = value;
    }
}
  • EntityCollection节点1
  • 节点Node2
这些名称令人困惑,因此我在designer中更改了名称

这种方法的问题是,在更新同一个类时,设计器将覆盖我的更改

我想做的是创建分部类(在另一个文件中),该分部类基本上包装了提到的导航属性:

public EntityCollection<Node> ChildrenNodes 
{
    get
    {
        return Node1;
    }
    set
    {
        Node1 = value;
    }
}

public Node ParentNode 
{
    get
    {
        return Node2;
    }
    set
    {
        Node2 = value;
    }
}
public EntityCollection子节点
{
得到
{
返回节点1;
}
设置
{
节点1=值;
}
}
公共节点父节点
{
得到
{
返回节点2;
}
设置
{
Node2=值;
}
}
现在,我可以从头开始重新创建EDMX,并且我的属性将保持不变

然而,我不确定的是,这是否会打破实体框架。我不知道这个名字访问了多少EF,所以我不确定这样做会带来什么后果


这会正常工作还是会产生一些问题?

您使用的是哪个版本?我认为任何名称更改都是在edmx更新过程中保留的。但是,也许是这样,我记得在edmx中从未见过更改数据库中的某些内容(不确定是关系还是可空字段或类似内容),除非从模型中删除相关表,然后重新读取,因此丢失了名称。LINQ to SQL就是这种情况,但根据我的经验,实体框架工作得更好。@KornelijePetak您解决过这个问题吗?您使用的是哪个版本?我认为任何名称更改都是在edmx更新过程中保留的。但是,也许是这样,我记得在edmx中从未见过更改数据库中的某些内容(不确定是关系还是可空字段或类似内容),除非从模型中删除相关表,然后重新读取,因此丢失了名称。LINQ to SQL就是这样,但根据我的经验,实体框架工作得更好。@KornelijePetak你解决过这个问题吗?