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 回答