我一直注意到当我使用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数据对象上使用扩展方法还是什么?
任何想法都会非常感激。
谢谢!
答案 0 :(得分:3)
你应该结帐AutoMapper。这是一个非常好的库,可以帮助您在应用程序中的对象之间设置映射。例如,您可能拥有域实体和一层DTO;那么你可以使用AutoMapper从你的实体映射到相应的DTO,我认为这是你想要做的。