0

データベースの最初のエンティティ フレームワーク アプリケーションにビジネス ロジックを追加しようとしています。address1 の長さを 35 に制限し、残りを address to に移動します。データベースではフィールドは Address1 と Address2 で、私の edmx では address1 と address2 です。パーシャルを使用して edmx を拡張しました。しかし、カスタム get 関数を呼び出そうとすると、現在のスレッドがスタックオーバーフローにあるという例外が発生します。

 public partial class EmployeeWithAddress
    {
        public string Address1
        {
            get
            {
                var employee = Common.LimitAddressFieldTo35(this);
                address1 = employee.Address1;
                address2 = employee.Address2;
                return address1;
            }
            set { address1 = value; }
        }

        public string Address2 { get; set; }
    }

static public EmployeeWithAddress LimitAddressFieldTo35(EmployeeWithAddress employee)
        {
            var ee = employee;  
            if (ee.Address1.Length > 35)
            {
                var address = ee.Address1;
                ee.Address1 = address.Substring(0, 35).Trim();
                ee.Address2 =
                    string.Concat(address.Substring(35, address.Length - 35) + " ", employee.Address2).Trim();
            }

            return ee;
        }

LimitAddressFieldTo35 を呼び出すときに例外が発生します。.net 3.5 に含まれるエンティティ フレームワーク バージョンを使用しています

4

1 に答える 1

4

これは無限に再帰します

Address1 { get { ... address1 = employee.Address1; ...} }
于 2012-10-15T19:48:40.063 に答える