Linq / Linq-to-Sql / C# 新手问题,但我似乎找不到任何有用的信息。我可能没有正确地表达这个问题。任何帮助表示赞赏。
所以,我有一些现有的数据库表,并从中生成了 DBML 文件。我有部分类和 DataContext。如何将我的实体类连接回这个?
我只是错过了一些非常明显的东西吗?
谢谢
Linq / Linq-to-Sql / C# 新手问题,但我似乎找不到任何有用的信息。我可能没有正确地表达这个问题。任何帮助表示赞赏。
所以,我有一些现有的数据库表,并从中生成了 DBML 文件。我有部分类和 DataContext。如何将我的实体类连接回这个?
我只是错过了一些非常明显的东西吗?
谢谢
如果你想让你的实体类与你的部分 DAO 类分开(这对于非平凡的应用程序来说是一件好事),最直接的方法是在两者之间创建一个映射层(例如PropertyA
在你的 DAO 类中映射PropertyB
到你的实体类)。
如果两个层之间的大多数字段名称/类型相同,那么节省大量冗余编码的一种方法是使用像AutoMapper这样的映射库。它可以轻松处理相同的属性,并且可以在大多数情况下配置为处理不同的属性而无需太多努力。
在 MVC 项目中,我通常在存储库中执行此操作。我将拥有Map()
接受一种对象并创建另一种对象的函数。例如,要将数据层Order
类映射到域层Order
类:
public Domain.Order GetOrder(int orderID)
{
Data.Order order = context.Orders.Where(o => o.OrderID = orderID); //
Domain.Order newOrder = Map(order);
return newOrder;
}
public Domain.Order Map(Data.Order order)
{
if (!UsingAutomapper)
{
// raw way
Domain.Order newOrder = new Domain.Order
{
ID = order.OrderID,
Number = order.OrderNumber,
OrderDate = order.OrderDate
};
return newOrder;
}
else // let AutoMapper do the dirty work
{
return Mapper.Map(order);
}
}