实体框架:创建独立实体

时间:2013-04-03 12:39:08

标签: c# linq entity-framework-5

美好的一天,stackoverflow 我的问题是:当DataContextModel中的实体在代码中的某个地方被实例化时,它是否已经引用了数据库记录?或者它可以用作普通class吗?例如:

public void SomeMethod()
{
   var FirstEntity = new DBEntity(); //DBEntity is some entity from the database
   var SecondEntity = new DBEntity();
   var ThirdEntity = new DBEntity();
   DbSet<DBEntity>.Add(SecondEntity);
   DbSet<DBEntity>.Add(ThirdEntity);
   DbContext.SaveChanges();
}

那么,当FirstEntity退出时,SomeMethod会以某种方式受到影响,还是会被删除?
提前谢谢。

1 个答案:

答案 0 :(得分:4)

如果不在上下文范围内,那只是一个普通的课程。

但要小心,假设在另一个对象中引用了FirstEntity,如:

var FirstEntity = new DBEntity(); 
var SecondEntity = new DBEntity();
var ThirdEntity = new DBEntity();
DbSet<DBEntity>.Add(SecondEntity);
DbSet<DBEntity>.Add(ThirdEntity);
SecondEntity.Sibling = FirstEntity;

保存更改时,如果示例中的Sibling是外键引用,它会自动将FirstEntity添加到数据库中。

另一个明确的例子:

var Computer = new ComputerEntity();
var Motherboard = new MotherboardEntity();
Computer.Motherboard = Motherboard;
DbSet<ComputerEntity>.Add(Computer);
DbContext.SaveChanges();

这会将计算机主板保存到数据库。