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?)