2011-08-16 1 views
2

私は今かなり読んでいて、以下のことはできないと思っていますが、できるだけ専門家からの確認を受けたいと思います。部分クラスのオーバーライドまたは非表示プロパティ

すべての自動生成linq-to-sqlクラスでは、値が設定されているかどうかを調べるためにすべてのプロパティを倍増することになります。たとえば、Nameプロパティを持つPersonクラスがあります

public partial class Person 
{ 
    public string Name 
    { 
     get { return this._Name; } 
     set 
     { 
      if (!string.IsNullOrEmpty(value)) 
      { 
       value = value.trim(); 
       this._Name = value.Substring(0, Math.Min(value.Length, 200)); 
      } 
      else 
       throw new InvalidOperationException("Person name cannot be blank"); 
     } 
    } 
} 

データベースに保存しても名前が最大長を超えないようにするための単純なチェックが必要です。

これは、自動生成されたクラスのほぼすべてのプロパティを2倍にすることを意味し、すべてが似たような名前になってしまうため、大混乱になります。

私はオブジェクトを自分で表現することで部分クラスの上にレイヤーを追加しようとしましたが、クラスに依存するクラスをインスタンス化するときに問題に遭遇しました...人が会社を持っていて、会社を再建する会社の人をインスタンス化する会社...

私は部分クラスで何をしようとしていますか?そうでない場合、最も効果的な選択肢は何ですか? 部分クラスを継承してプロパティをオーバーライドすることはありますか? OnChangeイベントを使用してチェックを実行しますか?

答えて

2

を達成しようとしています:http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx

そして再び、ここ

http://geekswithblogs.net/AzamSharp/archive/2008/03/30/120875.aspx

また、あなたは、より堅牢な検証サポートを提供してEntity Frameworkは、にL2Sから移動するに見たいと思うかもしれません。

+0

これらの2つのブログでは、非常に明確な感謝をしました。また、Entityフレームワークが今や行く方法であることは明らかです。多対多の関係を管理しやすくする必要があります。ありがとう! –

1

これは、あなたがSQLにlinqを作ろうとしているように思えます。私はこのような状況に遭遇したとき、私はツールを探し始める/ライブラリ/ ORMなどに適していている私がお勧めのアプローチはここScottGuのブログ記事にレイアウトされている

関連する問題