我在UWP应用程序(EntityFrameworkCore.SQLite)中使用EntityFramework 7。 Microsoft建议在数据库上执行请求以提高性能时使用新上下文。 Howerver当我想在不同的上下文中添加具有现有关系的新元素时,我遇到了问题。 例如,我有一个类Person和类Dog。一个人有很多狗,一只狗只有一个主人。 就我而言,我想添加一个以现有人为所有者的新狗。
另外,我想创建一个抽象层来将数据访问与我的ViewModel分开。
以下是我的课程:
public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
public List<Dog> Dogs { get; set; }
}
public class Dog
{
public int DogId { get; set; }
public string Name { get; set; }
public int PersonId { get; set; }
public Person Person { get; set; }
public Dog(string name, Person person)
{
Name = name;
Person = person;
}
}
我的用例可以通过以下代码说明:
Person person = new Person() { Name = "Samuel" };
using (var db = new DatabaseContext())
{
db.People.Add(person);
db.SaveChanges();
}
using (var db = new DatabaseContext())
{
Dog dog = new Dog("Droopy", person);
db.Dogs.Add(dog);
db.SaveChanges();
}
如果我执行此代码,EF将在数据库中创建Person的新实例。 解决方法是使用以下代码替换Dog构造函数:
public Dog(string name, Person person)
{
Name = name;
PersonId = person.PersonId;
}
但解决我的问题的最佳(和其他)解决方案是什么?
塞缪尔
答案 0 :(得分:0)
您可以在单个数据库调用中执行所需的一切:
data