- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3 个项目:
WPF 应用程序具有对 WCF 项目的服务引用。我遇到的问题是当我尝试这样的事情时:
public List<DbTable> GetItems()
{
try
{
IQueryable<DbTable> items;
using (var dbContext = new MyEntities())
{
items = dbContext.Items.Select(a => a);
return items.ToList();
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
return null;
}
}
WCF 服务未返回任何结果,我收到通用 HTTP 未正确设置错误消息。
因此,在阅读了一些内容后,我决定在 WCF 服务中创建 POCO 类,这很有效。
using (var dbContext = new MyEntities())
{
var items = dbContext.Items.Select(a =>
new MyPocoClass
{
ItemId = a.ItemId,
Name = a.Name
});
return items.ToList();
}
我的问题是,我是否可以不创建 POCO 类来来回传输数据而只返回 Entity Framework 对象?如果可以的话,我是不是漏掉了一步之类的?
这是我尝试返回任何 EF 对象时的消息
比如 return dbContext.Items.ToList();
我让它工作的唯一方法是使用 POCO 类。
更新:
这是我的服务配置文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<services>
<service name="MyProject.WebService.MyWebService">
<endpoint address="" binding="basicHttpBinding" contract="MyProject.WebService.IMyWebService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/MyProject.WebService/MyWebService/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
还有我的客户:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IMyWebService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8733/Design_Time_Addresses/MyProject.WebService/MyWebService/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyWebService" contract="ServiceReference.IMyWebService" name="BasicHttpBinding_IMyWebService" />
</client>
</system.serviceModel>
</configuration>
重新更新-
Inner Exception:
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
最佳答案
我认为您应该保留 DTO 层 (POCO),因为随着您的模型变得越来越复杂,如果您尝试直接返回实体(取决于您的数据结构),延迟加载会导致各种问题。例如,如果您有一个相当标准的关系设置,例如:
等等
public class Client
{
public int ClientId { get; set; }
public string ClientName { get; set; }
public IList<Contact> Contacts { get; set; }
}
public class Contacts
{
public int ContactId { get; set; }
public string ContactName { get; set; }
public IList<Order> Order { get; set; }
}
当您尝试通过 WCF 边界传递客户端对象时,序列化程序将触及实体中的每个属性并加载相关实体(联系人、订单、订单项、商店库存、照片)。
这可能会导致大量级联的数据加载,或者由于循环引用而失败。
如果您禁用延迟加载,那么您的对象将充满空值,但还有很多其他原因不传递实体,例如如果您更改数据库结构等则不需要重建客户端应用程序。
如果您发现制作 DTO -> 实体 -> DTO 映射很耗时,请查看 AutoMapper,它可以做到这一点。
我发现使用 AutoFixture 和 DeepEqual 为这个映射编写单元测试很有帮助。
关于c# - POCO 类未从 WCF 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22587074/
以下哪项是实现 poco 的最佳方式? 选项 1: public class PocoOption1 { public PocoOption1(int val1,string val2) {
我有一个接受 的方法任意 POCO。然后,该方法需要能够检查 POCO 是否为 List。 .如果不是列表,则需要将其转换为列表。 例子 MyCustomMethod(object input) {
我在研究 ADO.net Entity Framework (EF 4.0) 时遇到了这个术语。我很难理解这个词。我知道 POCO 类及其在创建 PI 模型中的用途,但我不确定 POCO 代理。 有人
我在 EF4 CTP5 项目上使用 POCO 类,但在删除子属性时遇到问题。这是我的例子(希望不会太长)。 旅游类相关部分 public partial class Tour { public G
我开始使用 Poco::NotificationQueue。我注意到奇怪的行为,如果多个工作线程使用 waitDequeueNotification() 在同一个 NotificationQueue
在我的一个项目中,我有一些模型不想与 POCO 一起使用,即使用 EF 生成的类和其他一些我想使用 POCO 的模型。当我混合使用它们时,POCO 映射不起作用,我得到一个异常 System.Inva
我看到了这个问题,“POCO 是什么意思?”在网上问了很多,看到很多解释,但我还是不清楚。我知道它代表“Plain Old CLR Object”,但这并不能真正帮助我理解。 有人可以给我一些不是 P
遇到这样的情况怎么办?拥有多个 ViewModel 引用同一个 POCO 对象。 ViewModel A 更新 POCO ......现在 ViewModel B 需要以某种方式了解这一点? 最佳答案
我在 WCF 服务应用程序中有一层业务级对象和一层契约(Contract)级对象。我所指的业务层对象只是我用来保存数据的实体或 POCO 对象。我指的契约(Contract)级对象是构成我的客户看到的
向 POCO 添加方法或创建单独的类以在我们需要时更新 POCO 的值是一种好的做法吗? 例如, public class ForUser { [Required] public in
我在 Poco 中编写了一个 HTTP 客户端,它将 POST 请求发送到 HTTPServer 以下是片段 Poco::Net::HTTPClientSession s("127.0.0.1", 9
我有一个场景,其中我有一些自定义实体在绑定(bind)到其 UI 的系统(桌面)中使用。我已经转向 Entity Framework 以获得它提供的好处,但由于自定义实体与系统紧密耦合,我将继续使用自
我第一次在一个小项目中尝试使用 POCO 的 EF 4。在我的 Repository 实现中,我想提供一个 AddOrUpdate 方法,如果它是新的,它会将传入的 POCO 添加到存储库中,否则什么
我正在尝试将图像上传到远程网络服务器。我使用过 HTMLForm 和 FilePartSource。我能够成功地将图像上传到本地服务器(即 loclhost),但是当我尝试将其上传到远程服务器时,从远
我已尝试将 Entity Framework 4 和 POCO 用于我的 MVC 3 项目。可能是,我不明白这个ORM的主要思想,但问题如下: 我添加了 ADO .NET 实体数据模型并根据数据库制作
我在服务方法中遇到一种情况,其中将 POCO 分配为另一个 POCO 的子对象无法按预期工作。我正在使用 Entity Framework 4。 public void ChangeOrderCurr
我是 POCO lib 的新手,我正在做教程 pdf 上的网络示例。 当我运行 DatagramSocket 发送示例时,我总是会收到 Poco::Net::NetException。 如果我使用教程
有人可以指出 POCO、自我跟踪实体、POCO 代理之间的区别吗? 实际上,我正在使用 Entity Framework 4.0 和 POCO(存储库模式),每当我在 POCO 中进行一些更改并调用
将域对象与任何类型的持久性代码完全分离的能力使系统更具可扩展性和可维护性。当业务逻辑可以与存储代码分开测试时,测试变得更加容易。将 POCO 与 Entity Framework (EF) 一起使用绝
我有 POCO 类,我使用 NewtonSoft json 进行序列化。现在我想将其迁移到Google协议(protocol)buff。有什么方法可以迁移我的所有类(不是手动),以便我可以使用 goo
我是一名优秀的程序员,十分优秀!