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);
}
}
}
c# entity-framework entity-framework-6
|
show 2 more comments
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);
}
}
}
c# entity-framework entity-framework-6
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
|
show 2 more comments
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);
}
}
}
c# entity-framework entity-framework-6
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
c# entity-framework entity-framework-6
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
|
show 2 more comments
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
|
show 2 more comments
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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