提供类作为保存数据的服务的正确方法是什么?

时间:2013-05-31 14:06:31

标签: c# wcf entity-framework

我在IIS服务器上使用Entity Framework。我的服务有几种方法可供经过身份验证的用户访问。

以下是其中一种方法的示例:

public bool SaveTruckInventoryReading(TruckInventory truckInventory)
{
  entities.AddToTruckInventories(truckInventory);
  entities.SaveChanges();
  return true;
}

我没有提供太多信息,因为我想问一个具体的问题。 TruckInventory是一个实体对象。我应该创建一个他们传入的类,还是我正在以正确的方式让它们将对象传递给我的方法?

如果我创建一个类,我必须将它转换为我的实体对象。对我来说,似乎是没有必要的额外代码。

如上所示,暴露我的实体对象是一种接受信息的坏方法,还是应该让它们传递给泛型类?

2 个答案:

答案 0 :(得分:1)

对此没有“正确”的答案。

如果TruckInventory是POCO,那么以你的方式揭露它并没有太大的危害。然而,有许多人认为这可能会违反你的担忧分离。

如果问题分离是一个问题,那么我会使用TuckInventory DTO,只公开您希望消费者有权访问的信息。如果你走这条路线,你需要一个像AutoMapper这样的映射器来从你的DTO映射到你的实体。

答案 1 :(得分:0)

我不认为以这种方式直接暴露您的实体是个好主意。您应该创建一个DTO并将其传递给服务,然后将DTO转换为实体并将其保存在DB中。

原因是EF类不是为序列化而设计的。他们会有很多额外的信息,你不需要发送到服务器