C# 虚拟财产赢得';t实体框架6中的延迟加载(带警告)

C# 虚拟财产赢得';t实体框架6中的延迟加载(带警告),c#,sql-server,entity-framework,lazy-loading,ef-fluent-api,C#,Sql Server,Entity Framework,Lazy Loading,Ef Fluent Api,我被卡住了 这是我的模型: public class Payment { [ForeignKey("RecipientId")] public virtual Account Recipient { get; set; } public string RecipientId { get; set; } [Key, Column(TypeName = "char"), MaxLength(36)] public string PaymentId {

我被卡住了

这是我的模型:

public class Payment 
{
    [ForeignKey("RecipientId")]
    public virtual Account Recipient { get; set; }

    public string RecipientId { get; set; } 

    [Key, Column(TypeName = "char"), MaxLength(36)]
    public string PaymentId { get; set; }
}
该模型通过fluent API表示如下:

modelBuilder.Entity<Payment>()
    .HasRequired(t => t.Recipient)
    .WithMany()
    .HasForeignKey(t => t.RecipientId)
    .WillCascadeOnDelete(false);
好的请求

=========================================================
ID: 'bf08bdf4-a9d5-42e0-9236-a65faa4cc6ea                  '
=========================================================
SELECT 
    [Extent1].[TransactionId] AS [TransactionId],
    [Extent1].[RecipientId] AS [RecipientId],
    [Extent2].[AccountId] AS [AccountId], 
    [Extent2].[Name] AS [Name],
    FROM   [dbo].[Payment] AS [Extent1]
    INNER JOIN [dbo].[Account] AS [Extent2] ON [Extent1].[RecipientId] = [Extent2].[AccountId]
=========================================================
Recipient is null...
=========================================================
ID: 'f0e9beef                               ' 
=========================================================
SELECT 
    [Extent1].[TransactionId] AS [TransactionId],
    [Extent1].[RecipientId] AS [RecipientId],
    [Extent2].[AccountId] AS [AccountId], 
    [Extent2].[Name] AS [Name],
    FROM   [dbo].[Payment] AS [Extent1]
    INNER JOIN [dbo].[Account] AS [Extent2] ON [Extent1].[RecipientId] = [Extent2].[AccountId]
=========================================================
Recipient is not null!
RecipientId: '835cbb56                          '    
Name: John Doe

更新

我正在调查原始sql的结果,发现新更改的属性上保存了额外的空间

我偶然发现了Ro Miller的这篇文章:

传达字符串截断可能是一个问题。。。让我们看看…

是的

更改ID字段的长度后,在返回LINQ to Entity查询时,我得到了不需要的“空白”

通过遵循Ro Miller的拦截器指南,我能够保证在到达数据库的过程中所有字符串字段都被修剪

重要的是要注意到,最近EF6.1中才提供了接收器功能


希望能帮助别人。。。我今天花了11个小时在这上面。

修复了。谢谢你;)fluent API用于
交易
,而不是
支付
。你能给我们看看它生成的SQL语句吗?(并向我们显示一个通过SQL加载但未加载到数据集中的ID?)