Entity Framework Include - Returns NULL
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
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 '18 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 '18 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 '18 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 '18 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 '18 at 2:02
|
show 2 more comments
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 '18 at 2:11
Shiju Samuel
asked Nov 22 '18 at 16:55
Shiju SamuelShiju Samuel
294420
294420
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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 at 2:02
|
show 2 more comments
0
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',
autoActivateHeartbeat: false,
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
0
active
oldest
votes
0
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.
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 '18 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 '18 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 '18 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 '18 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 '18 at 2:02