2009-06-04 3 views
0

私はこのような表ました:私は、リスト内の私の表のデータ 名=「MyData1」から抽出データベースからカスタムデータをシリアル化する方法は?

[Serializable] 
public class Mydata 
{ 
    public string Mail{get;set;} 
    public string Name{get;set;} 
    public string Nick{get;set;} 
} 

ID Name  Key  Value 
1 Mydata1  Mail  myval1 
1 Mydata1  Name  myval2 
1 Mydata1  Nick  myval3 
1 Yourdata key2  myval4 

と、このようなクラスを。

どのように私のクラスでこのデータをシリアル化する。 ありがとう!

+0

serializeと言ったら、データベースにクエリを実行してMydataオブジェクトを生成する方法を意味しますか? – Kane

+0

"SQLテーブルを転記する方法は?" –

答えて

1

LINQ to SQL、LINQ to Entities、NHibernateなどを調べる必要があります。これらは、ORマッパー、またはオブジェクト/リレーショナルマッパーです。彼らはあなたのためにあなたのデータベースを照会し、あなたのドメインからシリアル化されたオブジェクトを返すように設計されています。データベースサーバーに永続化され、データベースサーバーから取得されるオブジェクトを使用してアプリケーションを構築するために要する労力を大幅に削減できます。

LinqからSQLにはSQL Serverが必要であり、他の2つは任意のデータベースで使用できることに注意してください。

+0

ここに必要な翻訳は、*直接*翻訳しないと思います... –

0

クラスが既にある場合は、ORMで「POCO」サポートを探しています。

など。エンティティフレームワークv4はこれを行います。 here for detailsを参照してください。私はnHibernateが今日このサポートを持っていることを理解しています。

SQLにLINQを使用して
var rs = dbCmd.ExecuteReader(); 
var results = new List<MyDto>(); 
while (rs.Read()) { 
    results.Add(new MyDto { 
    Id = rs.ReadInt("Id"), 
    Name = rs.ReadString("Name"), 
    ... 
    }; 
} 

using (var dc = MyDataContext()) { 
    var results = from d in dc.MyDataType 
       select new MyDto { 
        Id = d.Id, 
        Name = d.Name, 
        ... 
       }; 
} 

はまた、あなたのデータアクセス層では、データリーダーを使用してデータアクセス層(DTOの== Data Transfer Object)に変換を行うことができます

しかし、私はマッピングを実行するヘルパーメソッドを使って生成されたエンティティをカスタマイズするメソッドを追加する傾向があります。これは、各クエリのプロパティコピーコードを繰り返さないようにします。