c# - WCF/LINQ to SQL 中的序列化

标签 c# linq wcf serialization

我用我需要的表创建了我的 dbml 文件。生成的方法之一就是这样,名称已更改并且在语法上不正确。但是我的代码使用创建的原始方法进行编译。

[Association(Name="Clients_ToEmployee", Storage="_ToEmployees", ThisKey="ClientID", OtherKey="ClientID")]
[DataMember(Order=70, EmitDefaultValue=false)]
public EntitySet<ClientToEmployee> ClientToEmployees
{
    get
    {
        if ((this.serializing &&(this._ToEmployees.HasLoadedOrAssignedValues == false)))
        {
            return null;
        }
        return this._ToEmployees;
    }
    set
    {
        this._ToEmployees.Assign(value);
    }
}

当我尝试使用

序列化我的结果集时
 DataContractSerializer ser =
                new DataContractSerializer(clientObj.GetType());
var memStream = new System.IO.MemoryStream();
ser.WriteObject(memStream ,clientObj);
memStream .Seek(0, System.IO.SeekOrigin.Begin);
var streamReader = new System.IO.StreamReader(memStream );
var xml = streamReader.ReadToEnd();

看起来像这段代码,见下文,它总是返回 null

if ((this.serializing && (this._ToEmployees.HasLoadedOrAssignedValues == false)))

如果我设置一个断点并单步执行代码,那么上面的语句

this._ToEmployees.HasLoadedOrAssignedValues

是真的,我得到了我的对象,而不是返回一个 null。

为什么当我单步执行代码时它的行为是正确的?我是否应该引入延迟以便填充 Entityset 对象?

最佳答案

我在我的 WCF 服务中遇到了同样的问题。在我的例子中,事实是在调试时,Linq 有足够的时间延迟加载子记录。当不处于 Debug模式时,它只是返回父记录。我的大多数方法都很好,但是有很多父记录和很多子记录,但没有一个子记录成功。所以我将此代码放入我的 WCF 方法中:

DataLoadOptions dlOptions = new DataLoadOptions();
dlOptions.LoadWith<ParentTable>(Parent => Parent.Child);
dc.LoadOptions = dlOptions;

关于c# - WCF/LINQ to SQL 中的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/940853/

相关文章:

c# - WPF 文本 block 不会在运行时显示属性更改

c# - 如何订阅在禁用 DWM 组合/Aero Glass 时引发的操作系统级事件?

linq - 无法将类型 'System.Collections.Generic.IEnumerable>>' 隐式转换为 'System.Collections.Generic.IEnumerable' 。存在显式转换

oracle - 将 XML 从 Oracle 发布到 WebAPI

c# - 可以从 SOAP UI 使用服务,但是调用该服务的 SQL Clr 不起作用

c# - 如何在 C# 中使用 Task<bool> 函数输出字符串值

c# - 如何解析和生成 ISO 8601 格式的 DateTime 对象

c# - 如何根据表达式 <T, K> 的结果将 List<K> 按 List<T> 分组?

c# - LINQ: ...Where(x => x.Contains(以 "foo"开头的字符串 ))

java - 开发使用安全 METRO 2.1 Web 服务的 .NET 客户端