Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提供类作为服务来保存数据的正确方法是什么?_C#_Wcf_Entity Framework - Fatal编程技术网

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

C# 提供类作为服务来保存数据的正确方法是什么?,c#,wcf,entity-framework,C#,Wcf,Entity Framework,我正在IIS服务器上使用实体框架。我的服务有几个方法,经过身份验证的用户可以访问这些方法 以下是其中一种方法的示例: public bool SaveTruckInventoryReading(TruckInventory truckInventory) { entities.AddToTruckInventories(truckInventory); entities.SaveChanges(); return true; } 因为我想问一个具体的问题,所以我没有在里面放太多的信

我正在IIS服务器上使用实体框架。我的服务有几个方法,经过身份验证的用户可以访问这些方法

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

public bool SaveTruckInventoryReading(TruckInventory truckInventory)
{
  entities.AddToTruckInventories(truckInventory);
  entities.SaveChanges();
  return true;
}
因为我想问一个具体的问题,所以我没有在里面放太多的信息。TruckInventory是一个实体对象。我是否应该创建一个他们传入的类,或者我正在做的是以正确的方式允许他们将对象传入我的方法

如果我创建一个类,我必须将它转换为我的实体对象。在我看来,这似乎是多余的代码,这是不必要的


如上所示,公开我的实体对象是一种接受信息的糟糕方式,还是应该让它们传入泛型类?

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


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

对此没有“正确”的答案

如果
TruckInventory
是POCO,那么以您的方式暴露它不会有很大的危害。然而,有许多人会争辩说,这可能会违反您的关注点分离


如果关注点分离是一个问题,那么我将使用
目录
DTO,它只公开您希望消费者能够访问的信息。如果您走这条路,您将需要像AutoMapper这样的映射器来从您的DTO映射到您的实体。

我将创建一个使用TruckInventory的存储库,并从具有Add、Delete和,编辑等。这样,您的模型将是存储库的内部模型,并且可能是存储库中的一个接口。TruckInventory POCO是吗?@Maess是的,如果我正确理解POCO的话。这是一个非常基本的基于字符串的对象。@AzharKhorasany这不是太过分了吗?我只需要保存一条记录。虽然我同意您最有可能创建一个工作单元和存储库,但这不是您要问的问题。关注点分离