代码优先 - 按键获取子实体

时间:2012-08-14 22:15:27

标签: c# entity-framework-4 .net-4.0 ef-code-first

我正在使用Entity Framework 4.3.1 Code First,我有类似于以下内容的内容:

class Program
{
    static void Main(string[] args)
    {
        // get LogEntry with id x..
    }
}

public class MyContext : DbContext
{
    public DbSet<Log> Logs { get; set; }
}

public class Log
{
    public int LogId { get; set; }
    public ICollection<LogEntry> LogEntries { get; set; }
}

public class LogEntry
{
    public int LogEntryId { get; set; }
}

给定整数LogEntryId获取LogEntry对象的最佳方法是什么?是否可以直接获取实体而无需通过Log.LogEntries属性?

2 个答案:

答案 0 :(得分:2)

如果你有对上下文的引用,那么

var entry = context.Set<LogEntry>().Find(entryId);

答案 1 :(得分:1)

任何原因你都没有DbSet&lt; LogEntry&gt;在你的背景下?

如果你这样做,你可以直接从上下文中加载它。

public class MyContext : DbContext
{
    public DbSet<Log> Logs { get; set; }
    public DbSet<LogEntry> LogEntries { get; set; }
}

var logEntry = context.LogEntries.SingleOrDefault(le => le.LogEntryId == someLogEntryId);