2

次のような単純なものを使用して、LINQ-to-SQLを使用してMSSQLデータベースから物事を引き出すときに気づいていました。

    public IEnumerable<Contact> GetAll()
    {
        var Contacts = from c in _context.Contacts
                      select new Models.Contact
                      {
                          ContactID = c.ContactID,
                          FirstName = c.FirstName,
                          LastName = c.LastName,
                          Email = c.Email,
                          Phone = c.Phone,
                          Address1 = c.Address1,
                          Address2 = c.Address2,
                          City = c.City,
                          State = c.State,
                          Zip = c.Zip,
                          HighImportance = (bool)c.HighImportance,
                          PrimaryContact = (bool)c.PrimaryContact,
                          OfficeLocation = c.OfficeLocation
                      };
        return Contacts;
    }

作成したい OfficeLocations テーブルへの複雑なオブジェクト (外部キー参照) があります。私が次のようなことをした場合:

_context.OfficeLocations.SingleOrDefault(ol => ol.OfficeLocationID == c.OfficeLocationID);

次に、これは私の DBML によって生成された型を返します。今まで私は次のようなものを使用してきました:

OfficeLocation = new OfficeLocation
            {
                OfficeLocationID = c.OfficeLocationID,
                Name = c.OfficeLocation.Name,
                Phone = c.OfficeLocation.Phone
            }

しかし、DBML データ オブジェクトなどに拡張メソッドを使用するなど、もっと良い方法があるはずだと思います。

どんな考えでも大歓迎です。

ありがとう!

4

1 に答える 1

3

AutoMapperをチェックアウトする必要があります。これは、アプリケーション内のオブジェクト間のマッピングをセットアップするのに役立つ非常に優れたライブラリです。たとえば、ドメイン エンティティと DTO の層があるとします。その後、AutoMapper を使用してエンティティから対応する DTO にマップできます。

于 2012-10-17T19:49:34.513 に答える