我是实体框架的绝对初学者。我最近发现了ef,我认为它可以很好地完成我的项目。我玩过它并且我对它的实际效果感到有些困惑。
情况就是这样。
联系表有id,fname,lname,phone列。如果我运行下面的代码,一条记录将被插入到Contact表中。
Contact con = new Contact();
con.fname = TextBox1.Text;
con.lname = TextBox2.Text;
con.phone = TextBox3.Text;
ContactsDb db = new ContactsDb();
db.Contacts.AddObject(con);
db.SaveChanges();
我的问题是,当创建ContactsDb db时,它是否从表中加载所有记录,然后AddObject将新联系人添加到该列表中?
或者当我调用AddObject时,它只是将新联系人添加到空列表中,SaveChanges会将联系人保存在该列表中?
我希望我的描述足够,因为这是我第一次提问。
我担心的原因是,随着数据库变得越来越大,从表中加载所有记录将花费更多时间,如果DB上下文在创建时加载所有记录,性能将成为问题。 / p>
提前致谢
答案 0 :(得分:1)
实体框架使用延迟加载,这意味着仅在特别请求时才加载数据。您创建的db上下文对象仅充当数据库的接口。您在上下文中执行的任何操作(如添加对象)仅在上下文中调用.SaveChanges()时应用于数据库。然后,实体框架设计一个查询来插入或检索数据,并将任何检索到的对象映射到您可以在代码中使用的关系实体。