我们有关于Entity Framework对象的问题并通过WCF发送它们.我们有一个数据库,实体框架从该数据库创建了类,在这种特殊情况下是一个"钱包"类.
我们尝试使用以下代码转移电子钱包:
public Wallet getWallet()
{
Wallet w = new Wallet();
w.name = "myname";
w.walletID = 123;
return w;
}
Run Code Online (Sandbox Code Playgroud)
我们需要转移那个Wallet类,但是它不起作用,我们总是遇到同样的异常:
"收到对localhost的HTTP响应时发生错误:8860/ComplementaryCoins.svc.这可能是由于服务端点绑定不使用HTTP协议.这也可能是由于服务器中止了HTTP请求上下文(可能是由于服务关闭).有关详细信息,请参阅服务器日志."
我们在互联网上搜索,错误可能是由于需要对Entity Framework对象进行序列化.
我们完全不知道是否会出现这种情况,如果是这种情况,如何解决.我们的DataContract看起来像这样(非常简单):
[DataContract]
public partial class Wallet
{
[DataMember]
public int getwalletID { get { return walletID; } }
[DataMember]
public string getname { get { return name; } }
}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题?
编辑:我们的实体框架创建的类看起来像这样:
namespace ComplementaryCoins
{
using System;
using System.Collections.Generic;
public partial class Wallet
{
public Wallet()
{
this.Transaction = new HashSet<Transaction>();
this.Transaction1 = new HashSet<Transaction>();
this.User_Wallet = new HashSet<User_Wallet>();
this.Wallet_Item = new HashSet<Wallet_Item>();
}
public int walletID { get; set; }
public string name { get; set; }
public virtual ICollection<Transaction> Transaction { get; set; }
public virtual ICollection<Transaction> Transaction1 { get; set; }
public virtual ICollection<User_Wallet> User_Wallet { get; set; }
public virtual ICollection<Wallet_Item> Wallet_Item { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你帮助我们.
Naw*_*ada 16
我前段时间遇到了同样的问题,解决方法是:
实体框架返回一个序列化类而不是普通类.例如.Wallet_asfawfklnaewfklawlfkawlfjlwfejlkef而不是钱包
要解决这个问题,您可以添加以下代码:
base.Configuration.ProxyCreationEnabled = false;
Run Code Online (Sandbox Code Playgroud)
在您的上下文文件中.由于上下文文件是自动生成的,您可以在Context.tt中添加它.在Context.tt文件中,它可以添加到第55-65行:
<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
{
public <#=code.Escape(container)#>()
: base("name=<#=container.Name#>")
{
base.Configuration.ProxyCreationEnabled = false;
<#
if (!loader.IsLazyLoadingEnabled(container))
{
#>
this.Configuration.LazyLoadingEnabled = false;
<#
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3795 次 |
最近记录: |