将LINQ-to-SQL对象转换为模型对象的好方法是什么?

时间:2012-10-17 19:41:18

标签: c# asp.net-mvc sql-server-2008 linq-to-sql

我一直注意到当我使用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数据对象上使用扩展方法还是什么?

任何想法都会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:3)

你应该结帐AutoMapper。这是一个非常好的库,可以帮助您在应用程序中的对象之间设置映射。例如,您可能拥有域实体和一层DTO;那么你可以使用AutoMapper从你的实体映射到相应的DTO,我认为这是你想要做的。