【发布时间】:2020-10-15 21:04:29
【问题描述】:
在我的数据库中,我有两个表:Trucks 和 TruckTypes。许多卡车可以有许多卡车类型。我已经使用数据库设计器创建了我的模型,并且中间表(仅包含主键)已被忽略,我理解这是 EF 的默认行为:
当我检查模型时,似乎两者现在都有相应模型的 ICollection 似乎正在工作。当我尝试添加新项目或更新现有项目时出现问题。
目前我用这个更新我的记录:
using (var db = new Entities())
{
var truckResult = from t in db.ant_Truck
where t.Id == model.Id
select t;
var truck = truckResult.Single();
truck.Name = model.Name;
truck.ant_TruckType.Clear();
foreach (var truckType in model.TruckTypes)
truck.ant_TruckType.Add(new ant_TruckType()
{
Name = truckType.Name,
Disabled = truckType.Disabled
});
truck.Disabled = model.Disabled;
db.SaveChanges();
}
我想我理解这个问题:新的 ant_truckType 模型被添加为“新”而不是链接到“ant_truckType”表中的现有记录,但我仍然不确定如何链接它们。
我尝试创建另一个查询表的方法并尝试返回 ICollection<ant_truckType>,但这开始给我其他关于转换为 ICollection 的错误:
public ICollection<ant_TruckType> GetDbTruckTypesForTruck(ant_Truck truck)
{
using (var db = new Entities())
{
var result = from tt in db.ant_TruckType
where tt.ant_Truck.Contains(truck)
select tt;
var truckTypes = result.ToList() as ICollection<ant_TruckType>;
return truckTypes;
}
}
我不确定此时我是否正确地做事,因为我花了很长时间试图理解为什么这不起作用。尝试执行上述操作的最有效方法是什么?
提前致谢。
【问题讨论】:
标签: c# entity-framework