1
我试图通过写一个简单的主从关系到SQLite数据库来解决EF7问题。节能工作正常,但是阅读让我头疼:EF7读取主详细记录
这里是我的实体:
public class Message
{
public int MessageId { get; set; }
public string Name { get; set; }
public List<MessagePart> MessageParts { get; set; }
}
public class MessagePart
{
public int MessagePartId { get; set; }
public string Text { get; set; }
public int MessageId { get; set; }
public Message Message { get; set; }
}
的CreateMessage()做的事情应该是:
static void createMessages()
{
using (var db = new TestContext())
{
var m1 = new Message
{
Name = "train_arrives_in_x_minutes",
MessageParts = new List<MessagePart>()
{
new MessagePart {
Text = "Train arrives in 5 minutes"
},
new MessagePart {
Text = "Zug faehrt in 5 Minuten ein",
}
}
};
var m2 = new Message
{
Name = "train_out_of_service",
MessageParts = new List<MessagePart>()
{
new MessagePart {
Text = "train is out of service"
},
new MessagePart {
Text = "Kein Service auf dieser Strecke",
}
}
};
db.Messages.Add(m1);
db.Messages.Add(m2);
var count = db.SaveChanges();
Console.WriteLine("{0} records saved to database", count);
}
}
从现有的数据库中读取读取主记录正常,但详细记录集指针保持为空。
static void readMessages()
{
using (var db = new TestContext())
{
foreach (Message m in db.Messages)
{
Console.WriteLine(m.Name);
// exception here: m.MessageParts is always null
foreach(MessagePart mp in m.MessageParts)
{
Console.WriteLine("mp.Text={0}", mp.Text);
}
}
}
}
我能做些什么来强制这些消息部分加载吗?我之前和其他(Python)ORM一起工作过,之前从未遇到过这个问题。这是懒惰加载问题吗?我试图使用LINQ语句来获取这些子记录,但这也没有帮助。尽管在数据库中一切看起来不错。
谢谢,我应该多搜索一下,这里是另一个:http://ef.readthedocs.io/en/latest/querying/related-data.html – zeroc8