2014-11-02 39 views
0

琐碎的错误通常最难以定位!做了这么多次,但不知道为什么它抛出他的错误通过部分类扩展实体框架中的实体,stackoverflow例外

我需要在一个属性FullName中连接员工名和姓。因此,组合框的显示成员可以设置为“FullName”。

为此,我简单地创建对应于我的数据模型生成的Employee类另一部分类,如下

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data.Objects.DataClasses; 

namespace IGarage.DAL 
{ 
    public partial class Employee : EntityObject 
    { 
     public string FullName 
     { 
      get 
      { 
       return FullName; 
      } 
      set 
      { 
       value = this.FirstName + " " + this.LastName; 
      } 
     } 
    } 
} 

在一个名为Employee.cs

文件但是,当我查询数据库相关职工它抛出以下错误:

Exception !!

而且当我探索我看到THI问题s

This ! 请指教。

+0

我会怀疑LINQ呼叫不知何故进入一个无限循环,虽然我不知道如何... – Tim 2014-11-02 09:18:13

+0

我也是,但无法弄清楚它在哪里! – tariq 2014-11-02 09:18:45

+1

在FullName的getter中,您再次调用FullName的getter,这会导致无限递归。 – 2014-11-02 09:18:48

回答

4

正如评论所说,您的实现不工作,因为全名属性的getter只是再次调用自身,这将导致无限递归。另外,修改setter中的值变量并不能达到你想要的值。它不会将字符串存储在任何地方(除了在setter结束时超出范围的局部变量)。

从我可以告诉,你想没有setter一个只读属性都:

public string FullName 
    { 
     get 
     { 
      return this.FirstName + " " + this.LastName; 
     } 
    } 
+0

感谢队友现场...只是在场边,下面的集合做任何好设置 FullName = this.FirstName +“”+ this.LastName; } – tariq 2014-11-02 09:28:09

+0

不,除了另一个无限递归之外;)为什么你想要一个setter,这对我来说没有意义,因为这个属性是从另外两个值计算出来的? – 2014-11-02 09:30:23

+0

对,你只是想知道...你建议什么是我需要的 – tariq 2014-11-02 09:35:06

0
public string FullName 
    { 
     get 
     { 
      return FullName; 
     } 
} 

这里你调用属性的getter,你正在执行的getter,这会导致无限递归。 Btw。问问你自己,如果你真的需要这个属性的setter,因为FullName是一个名字和一个姓氏的连接。个人而言,我会做这样的说法:

public string FullName 
    { 
     get 
     { 
      this.FirstName + " " + this.LastName; 
     } 
}