2009-04-06 14 views
1

Entity Frameworkを使用するとDataLayerが作成されます(DataLayer.dll) DataLayer.dllにはデータオブジェクトが含まれています。 ビジネスロジックをクラス 'person'に追加する必要があります。Entity Framework:ビジネスレイヤー(オブジェクト)でのカスタムプロパティの作成

はい、私はビジネスロジックを追加するために部分クラスを使用できることを知っています。 しかし、この場合(部分クラスを使用)、DataLayer.dllに実装する必要があります。

私たちは実際にファイルmyPerson.cs

using DataLayer; 

namespace Businesslayer 
{ 
public class myPerson : DataLayer.Person 

public Property String FullName() 
{ 
    get {return this.Firstname + " " + this.LastName} 
} 

} 

を持ってBusinesLayer.dllに(BusinesLayer.dll)

をBusinessLayer.dll

をだから、ビジネスレイヤが作成されて使用する必要が

このようなグリッドにデータを表示する必要があります。

var data=context.Person; 
dataGridView1.dataSource = data; 

はいcontext.PersonはPerson-Objectsのリストを返す グリッドの列 'FullName'は利用できません

myPerson-Objectsでリストを作成するにはどうすればいいですか?

答えて

1

まず、フルネームを作成してグリッドに表示するのであれば、ビジネスレイヤではなくUIレイヤに属していると言えます。

第2に、これを継承する必要はありません。委任を使うことができます。あなたのUIPersonクラスに、コンストラクタ内のPersonのインスタンスを与えます。その後、あなたはグリッドに公開したい人の各プロパティの、このような何かを:

public DateTime BirthDate 
{ 
    get {return _person.BirthDate;} 
    set {_person.BirthDate = value;} 
} 

ReSharperのはあなたのためにこれを行うことができ、またはあなたには、いくつかの他のツールを使用するか、手でそれを行うことができます。同じ方法でFullNameプロパティを追加します。

+0

プロパティ 'FullName'は一例に過ぎません。はい、ビジネスオブジェクトはより複雑なビジネスロジックと異なる追加のプロパティを必要とします。あなたの解決策を究明する:グリッドにUIPersonのリストを表示する: var data = context.Person; データのforeach person {listUI.add(新しいUIPerson(人))} –

+0

まあ、より多くの "var listUI =データの人から選択新しいUIPerson(人);" –

関連する問題