I don’t see a lot of posts about this but it is possible to achieve.

Classes

public class MyContext: DbContext
{
    public MyContext()
    {
        Configuration.LazyLoadingEnabled = true;
        Configuration.ProxyCreationEnabled = true;
    }

    public DbSet<Table1> T1 { get; set; }

    public DbSet<Table2> T2 { get; set; }
}

[Table("Table1")]
public class Table1
{
    public int Id { get; set; }

    public int Tabel2Id { get; set; }

    [ForeignKey("Tabel2Id ")]
    public virtual Table2 Table2 { get; set; }
}

[Table("Table2")]
public class Table2
{
    public int Id { get; set; }

    public string SomeValue { get; set; }
}

Example Stored Procedure

SELECT * FROM Table1 WHERE Id = @SearchId

Using a DbSet … this DOES NOT WORK if you are using a full DbContext class.

var searchIdParam = new SqlParameter("@SearchId", searchId);
var searchResults = _dbSet.SqlQuery("LoadMyTable1s @SearchId);

You’ll find that your navigation properties are in fact loaded. I’ve been using this since at least EF5 …

OpenSSL Hits The News Again
BSOD!! Well, Well Old Friend

Discussion

  • Commenter's Avatar
    Illia Ratkevych — December 21, 2014 at 12:27 am

    Well, it is working only because of lazy loading I suppose. Your solution not quite helpful if I want to grab an object with navigation properties by one request – before lazy load will act.

Leave a Comment

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.