【发布时间】:2009-05-02 10:08:06
【问题描述】:
我遇到了一个问题,即使用来自两个相同类型的数据上下文的对象,不会提交对象。为简单起见,请考虑以下 LINQ-to-SQL 设计,其中我们有描述汽车和人员的数据库表。
+--------------+ +--------+
| Car | 1 1 | Person |
+--------------+---------+--------+
| Registration | | name |
| ownerId {FK} | +--------+
+--------------+
然后我们有两个数据存储库,它们具有相同数据上下文类的实例,具有以下方法:
public OwnerRepository {
private MyDataContext db;
public Person GetOwnerByName(string ownerName)
{
return (from person in db.Persons
where person.Name == ownerName
select person).SingleOrDefault();
}
}
public CarRepository {
private MyDataContext db;
public Car GetCarByRegistration(string registration)
{
return (from car in db.Cars
where car.Registration == registration
select car).SingleOrDefault();
}
public void RegisterOwner(Person owner, string registration)
{
var car = GetCarByRegistration(registration);
car.Owner = owner;
db.SubmitChanges();
}
}
假设我们从 OwnerRepository 中获取一个 Person 并使用它来将该人注册为汽车的所有者:
var owner = ownerRepository.GetOwnerByName("Peter Pan");
carRepository.RegisterOwner(owner, "TOO COOL");
RegisterOwner 方法将抛出异常,因为数据上下文无法识别 Person 对象(即使它属于同一类型)。你能做些什么来解决这个问题?
【问题讨论】:
标签: c# .net linq-to-sql