Entity Framework Include - Returns NULL











up vote
0
down vote

favorite












I want to load related entities with EF with a single DB Call (Eager Loading), to achieve this I am trying to use include statement as below.



var db = _DbContext;
var r1 = await
db.Request.Where(r => idList.Contains(r.RequestId))
.Include(r => r.RequestedService)
...more include
...more include
...more include
.ToListAsync();


When I am running it with include statements I get a single item with null returned, however if I run it without include it gives the entity back. After the above statement if I add below condition for null check I get back the entity.



if(r1.HasAny() && r1[0] == null)
{
r1 =
await
db.Request.Where(r => idList.Contains(r.RequestId)).ToListAsync();
}


What could be the reason's when adding an include can change the return? I have the navigational properties set to virtual and public.



Adding Entities



public class Request : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RequestId { get; set; }

public virtual ICollection<RequestedService> RequestedService { get; set; }
}


public class RequestedService : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RequestedServiceId { get; set; }
[Required]
public long RequestId { get; set; }
public virtual Request Request { get; set; }
}
public class RequestDbContext : DbContextBase
{
public object SyncObject = new object();

public RequestDbContext()
{
Database.SetInitializer<RequestDbContext>(null);
}

public RequestDbContext(string connectionStringName) : base(string.Empty)
{
Database.SetInitializer<RequestDbContext>(null);
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}

public virtual DbSet<Request> Request { get; set; }

public virtual DbSet<RequestedService> RequestedService { get; set; }

public class RequestDbContextInitializer : CreateDatabaseIfNotExists<RequestDbContext>
{
protected override void Seed(RequestDbContext context)
{
base.Seed(context);
}
}
}









share|improve this question




















  • 1




    Have you tried incrementally introducing the included relations? On a hunch I'd be looking at a faulty FK declaration on a required relation. EF will apply these as an Inner Join and if it happens to be mapped to the wrong column this could lead to the primary record not coming back. (or in other cases, the wrong relative row coming back.)
    – Steve Py
    Nov 22 at 21:22










  • Thanks @StevePy Yes, even if I try adding only single include, causes issue. Also, I have traced the queries generated and query is returning data correctly with proper join on the correct key.
    – Shiju Samuel
    Nov 23 at 0:34










  • That is curious... Can you put up the entity definitions and any configuration for the Request and the single Include scenario (assuming RequestedService) that this definitely occurs with?
    – Steve Py
    Nov 23 at 0:38










  • Added trimmed down version of the entities. I also realized I don't face this issue always for some requestId I get the entities returned correctly
    – Shiju Samuel
    Nov 23 at 1:22






  • 1




    Ok, I still would suspect a mismatched FK. One thing that I do see is that in RequestService (RequestSkill?) the RequestId should be marked with [ForeignKey(Request)] rather than [Required]. In the cases that the entities are returned correctly, check the referenced entities against your data, do they appear to be correct or associated against a different request?
    – Steve Py
    Nov 23 at 2:02















up vote
0
down vote

favorite












I want to load related entities with EF with a single DB Call (Eager Loading), to achieve this I am trying to use include statement as below.



var db = _DbContext;
var r1 = await
db.Request.Where(r => idList.Contains(r.RequestId))
.Include(r => r.RequestedService)
...more include
...more include
...more include
.ToListAsync();


When I am running it with include statements I get a single item with null returned, however if I run it without include it gives the entity back. After the above statement if I add below condition for null check I get back the entity.



if(r1.HasAny() && r1[0] == null)
{
r1 =
await
db.Request.Where(r => idList.Contains(r.RequestId)).ToListAsync();
}


What could be the reason's when adding an include can change the return? I have the navigational properties set to virtual and public.



Adding Entities



public class Request : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RequestId { get; set; }

public virtual ICollection<RequestedService> RequestedService { get; set; }
}


public class RequestedService : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RequestedServiceId { get; set; }
[Required]
public long RequestId { get; set; }
public virtual Request Request { get; set; }
}
public class RequestDbContext : DbContextBase
{
public object SyncObject = new object();

public RequestDbContext()
{
Database.SetInitializer<RequestDbContext>(null);
}

public RequestDbContext(string connectionStringName) : base(string.Empty)
{
Database.SetInitializer<RequestDbContext>(null);
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}

public virtual DbSet<Request> Request { get; set; }

public virtual DbSet<RequestedService> RequestedService { get; set; }

public class RequestDbContextInitializer : CreateDatabaseIfNotExists<RequestDbContext>
{
protected override void Seed(RequestDbContext context)
{
base.Seed(context);
}
}
}









share|improve this question




















  • 1




    Have you tried incrementally introducing the included relations? On a hunch I'd be looking at a faulty FK declaration on a required relation. EF will apply these as an Inner Join and if it happens to be mapped to the wrong column this could lead to the primary record not coming back. (or in other cases, the wrong relative row coming back.)
    – Steve Py
    Nov 22 at 21:22










  • Thanks @StevePy Yes, even if I try adding only single include, causes issue. Also, I have traced the queries generated and query is returning data correctly with proper join on the correct key.
    – Shiju Samuel
    Nov 23 at 0:34










  • That is curious... Can you put up the entity definitions and any configuration for the Request and the single Include scenario (assuming RequestedService) that this definitely occurs with?
    – Steve Py
    Nov 23 at 0:38










  • Added trimmed down version of the entities. I also realized I don't face this issue always for some requestId I get the entities returned correctly
    – Shiju Samuel
    Nov 23 at 1:22






  • 1




    Ok, I still would suspect a mismatched FK. One thing that I do see is that in RequestService (RequestSkill?) the RequestId should be marked with [ForeignKey(Request)] rather than [Required]. In the cases that the entities are returned correctly, check the referenced entities against your data, do they appear to be correct or associated against a different request?
    – Steve Py
    Nov 23 at 2:02













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I want to load related entities with EF with a single DB Call (Eager Loading), to achieve this I am trying to use include statement as below.



var db = _DbContext;
var r1 = await
db.Request.Where(r => idList.Contains(r.RequestId))
.Include(r => r.RequestedService)
...more include
...more include
...more include
.ToListAsync();


When I am running it with include statements I get a single item with null returned, however if I run it without include it gives the entity back. After the above statement if I add below condition for null check I get back the entity.



if(r1.HasAny() && r1[0] == null)
{
r1 =
await
db.Request.Where(r => idList.Contains(r.RequestId)).ToListAsync();
}


What could be the reason's when adding an include can change the return? I have the navigational properties set to virtual and public.



Adding Entities



public class Request : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RequestId { get; set; }

public virtual ICollection<RequestedService> RequestedService { get; set; }
}


public class RequestedService : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RequestedServiceId { get; set; }
[Required]
public long RequestId { get; set; }
public virtual Request Request { get; set; }
}
public class RequestDbContext : DbContextBase
{
public object SyncObject = new object();

public RequestDbContext()
{
Database.SetInitializer<RequestDbContext>(null);
}

public RequestDbContext(string connectionStringName) : base(string.Empty)
{
Database.SetInitializer<RequestDbContext>(null);
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}

public virtual DbSet<Request> Request { get; set; }

public virtual DbSet<RequestedService> RequestedService { get; set; }

public class RequestDbContextInitializer : CreateDatabaseIfNotExists<RequestDbContext>
{
protected override void Seed(RequestDbContext context)
{
base.Seed(context);
}
}
}









share|improve this question















I want to load related entities with EF with a single DB Call (Eager Loading), to achieve this I am trying to use include statement as below.



var db = _DbContext;
var r1 = await
db.Request.Where(r => idList.Contains(r.RequestId))
.Include(r => r.RequestedService)
...more include
...more include
...more include
.ToListAsync();


When I am running it with include statements I get a single item with null returned, however if I run it without include it gives the entity back. After the above statement if I add below condition for null check I get back the entity.



if(r1.HasAny() && r1[0] == null)
{
r1 =
await
db.Request.Where(r => idList.Contains(r.RequestId)).ToListAsync();
}


What could be the reason's when adding an include can change the return? I have the navigational properties set to virtual and public.



Adding Entities



public class Request : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RequestId { get; set; }

public virtual ICollection<RequestedService> RequestedService { get; set; }
}


public class RequestedService : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long RequestedServiceId { get; set; }
[Required]
public long RequestId { get; set; }
public virtual Request Request { get; set; }
}
public class RequestDbContext : DbContextBase
{
public object SyncObject = new object();

public RequestDbContext()
{
Database.SetInitializer<RequestDbContext>(null);
}

public RequestDbContext(string connectionStringName) : base(string.Empty)
{
Database.SetInitializer<RequestDbContext>(null);
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}

public virtual DbSet<Request> Request { get; set; }

public virtual DbSet<RequestedService> RequestedService { get; set; }

public class RequestDbContextInitializer : CreateDatabaseIfNotExists<RequestDbContext>
{
protected override void Seed(RequestDbContext context)
{
base.Seed(context);
}
}
}






c# entity-framework entity-framework-6






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 at 2:11

























asked Nov 22 at 16:55









Shiju Samuel

266416




266416








  • 1




    Have you tried incrementally introducing the included relations? On a hunch I'd be looking at a faulty FK declaration on a required relation. EF will apply these as an Inner Join and if it happens to be mapped to the wrong column this could lead to the primary record not coming back. (or in other cases, the wrong relative row coming back.)
    – Steve Py
    Nov 22 at 21:22










  • Thanks @StevePy Yes, even if I try adding only single include, causes issue. Also, I have traced the queries generated and query is returning data correctly with proper join on the correct key.
    – Shiju Samuel
    Nov 23 at 0:34










  • That is curious... Can you put up the entity definitions and any configuration for the Request and the single Include scenario (assuming RequestedService) that this definitely occurs with?
    – Steve Py
    Nov 23 at 0:38










  • Added trimmed down version of the entities. I also realized I don't face this issue always for some requestId I get the entities returned correctly
    – Shiju Samuel
    Nov 23 at 1:22






  • 1




    Ok, I still would suspect a mismatched FK. One thing that I do see is that in RequestService (RequestSkill?) the RequestId should be marked with [ForeignKey(Request)] rather than [Required]. In the cases that the entities are returned correctly, check the referenced entities against your data, do they appear to be correct or associated against a different request?
    – Steve Py
    Nov 23 at 2:02














  • 1




    Have you tried incrementally introducing the included relations? On a hunch I'd be looking at a faulty FK declaration on a required relation. EF will apply these as an Inner Join and if it happens to be mapped to the wrong column this could lead to the primary record not coming back. (or in other cases, the wrong relative row coming back.)
    – Steve Py
    Nov 22 at 21:22










  • Thanks @StevePy Yes, even if I try adding only single include, causes issue. Also, I have traced the queries generated and query is returning data correctly with proper join on the correct key.
    – Shiju Samuel
    Nov 23 at 0:34










  • That is curious... Can you put up the entity definitions and any configuration for the Request and the single Include scenario (assuming RequestedService) that this definitely occurs with?
    – Steve Py
    Nov 23 at 0:38










  • Added trimmed down version of the entities. I also realized I don't face this issue always for some requestId I get the entities returned correctly
    – Shiju Samuel
    Nov 23 at 1:22






  • 1




    Ok, I still would suspect a mismatched FK. One thing that I do see is that in RequestService (RequestSkill?) the RequestId should be marked with [ForeignKey(Request)] rather than [Required]. In the cases that the entities are returned correctly, check the referenced entities against your data, do they appear to be correct or associated against a different request?
    – Steve Py
    Nov 23 at 2:02








1




1




Have you tried incrementally introducing the included relations? On a hunch I'd be looking at a faulty FK declaration on a required relation. EF will apply these as an Inner Join and if it happens to be mapped to the wrong column this could lead to the primary record not coming back. (or in other cases, the wrong relative row coming back.)
– Steve Py
Nov 22 at 21:22




Have you tried incrementally introducing the included relations? On a hunch I'd be looking at a faulty FK declaration on a required relation. EF will apply these as an Inner Join and if it happens to be mapped to the wrong column this could lead to the primary record not coming back. (or in other cases, the wrong relative row coming back.)
– Steve Py
Nov 22 at 21:22












Thanks @StevePy Yes, even if I try adding only single include, causes issue. Also, I have traced the queries generated and query is returning data correctly with proper join on the correct key.
– Shiju Samuel
Nov 23 at 0:34




Thanks @StevePy Yes, even if I try adding only single include, causes issue. Also, I have traced the queries generated and query is returning data correctly with proper join on the correct key.
– Shiju Samuel
Nov 23 at 0:34












That is curious... Can you put up the entity definitions and any configuration for the Request and the single Include scenario (assuming RequestedService) that this definitely occurs with?
– Steve Py
Nov 23 at 0:38




That is curious... Can you put up the entity definitions and any configuration for the Request and the single Include scenario (assuming RequestedService) that this definitely occurs with?
– Steve Py
Nov 23 at 0:38












Added trimmed down version of the entities. I also realized I don't face this issue always for some requestId I get the entities returned correctly
– Shiju Samuel
Nov 23 at 1:22




Added trimmed down version of the entities. I also realized I don't face this issue always for some requestId I get the entities returned correctly
– Shiju Samuel
Nov 23 at 1:22




1




1




Ok, I still would suspect a mismatched FK. One thing that I do see is that in RequestService (RequestSkill?) the RequestId should be marked with [ForeignKey(Request)] rather than [Required]. In the cases that the entities are returned correctly, check the referenced entities against your data, do they appear to be correct or associated against a different request?
– Steve Py
Nov 23 at 2:02




Ok, I still would suspect a mismatched FK. One thing that I do see is that in RequestService (RequestSkill?) the RequestId should be marked with [ForeignKey(Request)] rather than [Required]. In the cases that the entities are returned correctly, check the referenced entities against your data, do they appear to be correct or associated against a different request?
– Steve Py
Nov 23 at 2:02

















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53435443%2fentity-framework-include-returns-null%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53435443%2fentity-framework-include-returns-null%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

What visual should I use to simply compare current year value vs last year in Power BI desktop

Alexandru Averescu

Trompette piccolo