0
考虑以下情形:在Entity Framework 4.1中,是否可以将两个实体关联而不从数据库中检索它们?
public class Entity1
{
virtual public Int32 ID { get; set; }
[Required]
virtual public String Name { get; set; }
[Required]
virtual public Entity2 ReferenceToEntity2 { get; set; }
}
public class Entity2
{
virtual public Int32 ID { get; set; }
[Required]
virtual public String Name { get; set; }
virtual public IList<Entity1> ListOfEntity1 { get; set; }
}
[TestClass]
public class EntityFrameworkTests
{
[TestMethod]
public void Should_save_entity_with_reference_to_entity_with_required_fields()
{
using (var db = new MyContext())
{
var entity1 = new Entity1
{
Name = "My name",
ReferenceToEntity2 = new Entity2 { ID = 1 } // reference (Entity2 with ID=1) already exists in the database
};
db.Entity1List.Add(entity1);
db.SaveChanges(); // exception here
}
}
[TestMethod]
[ExpectedException(typeof(DbEntityValidationException))]
public void Should_not_save_empty_entity2_name()
{
using (var db = new MyContext())
{
var entity2 = new Entity2 { Name = "" };
db.Entity2List.Add(entity2);
db.SaveChanges();
}
}
}
第一个测试不及格。引发DbEntityValidationException,在尝试保存Entity1实例时引用Entity2的Name属性。
我知道我可以通过ID加载entity2实例,并将它与entity1.ReferenceToEntity2 = db.Entity2List.Find(entity2Id)相关联,例如。但是我实际上有一个有很多引用的实体,而且我不想仅仅为了关联一个外键而去数据库10次!
是否可以将新的entity1实例插入到与现有的entity2记录相关的数据库中,而无需去数据库检索entity2?
在此先感谢!
它的工作原理! :) 非常感谢你 – ThiagoAlves