10

私はこれまでエンティティフレームワークを使用したことがないので、それを実装するいくつかの個人的なプロジェクトを試して、足を濡らしたいと思います。

エンティティをプレゼンテーション層に公開できることがわかりました。ただし、特定のフィールド、変更された日付や作成された日付などのフィールド、およびその他のさまざまなデータベースフィールドは公開したくありません。

Businessオブジェクトを実装し、必要なプロパティを公開しながら、オブジェクトをシリアル化できるようにするにはどうすればよいですか?

また、これにはLinqToSqlに比べてどのような利点がありますか?

4

4 に答える 4

3

エンティティに対してラッパー クラスを個人的に使用し、必要なものを公開またはシャドウします。

// instead of below property in your BLL:

private int m_someVariable;

public int SomeVariable
{
    get { return m_someVariable; }
    set { m_someVariable = value; }
}

// You can use the entity object:

private readonly EntityClass _entityObject = new EntityClass();

public int SomeVariable
{
    get { return _entityObject.SomeVariable; }
    set { _entityObject.SomeVariable = value; }
}

// or make it read-only at your BLL

public int SomeVariable
{
    get { return entityObject.SomeVariable; }
    // set { entityObject.SomeVariable = value; }
}
于 2011-03-05T22:43:37.497 に答える
1
      // this is your edmx
        Asset5Entities conx = new Asset5Entities();

// これは、データベース内のテーブルである Contact の新しいオブジェクト リストであると考えてください // エンティティ フレームワークを使用して、このデータベース テーブルは u が処理するオブジェクトにマップされます

            List$gt;Contact$lt; s = new List$gt;Contact$lt;();

//大きなLINQを使用して、データベース内の任意のテーブルを選択またはクエリできるようになり、//そのテーブルの例(電子メール)の列にアクセスできます

        var result = from q in conx.Contacts select q.Email;

// それよりも

        string sqlcommand = "select email from Contacts";
        Contact con = new Contact();
        con.Email= "xxxx@gmail.com";
        con.FirstName="nader";

        //etc etc... 



        conx.Contacts.AddObject(con);

        //rather than   " insert into Contact values ......................"

        //having your queries within ur c# code rather than strings that are not parsed //for errors but on runtime was alot helpful for me
于 2011-08-31T14:47:26.870 に答える
1

必要なプロパティのみをプレゼンテーション レイヤーにバインドします。これは、宣言、ビジネス ロジック レイヤー (独自のレベルのオブジェクト抽象化)、または ViewModel によって実行できます。

于 2011-03-05T09:12:29.350 に答える