我正在尝试使用 linq 创建一些实体,并且一定做错了什么
var ptemp = repository.PackageTemplates.Where(f => f.employeeId == data.EmployeeId).SingleOrDefault();
File file = AddFileStreams(StrToByteArray(data.FileDataIn), data.FileNameForDevice, repository, packageTypeItemId);
// add new packageItemTemplate
var pit = AddPackageItemTemplate((PackageTemplate)ptemp, file, repository, EnumPackageItemTemplatesCommand.DownloadFile, 0);
// Adds package Item for each package
repository.Packages.Where(pi => pi.PackageTemplate == ptemp).ToList().ForEach(pk =>
{
AddPackageItem(pit, pk, repository);
});
错误是将类型作为类型的一部分传递Packages
给另一个函数没有问题,我是否需要先创建一个列表然后循环遍历它?我似乎找不到解释。LINQ ForEach()
pit
我收到的错误消息是:
Unable to create a constant value of type 'PackageTemplate'.
Only primitive types ('such as Int32, String, and Guid') are supported
in this context.
如果我改为:
// Adds package Item for each package
repository.Packages.Where(pi => pi.PackageTemplateId == ptemp.Id).Select(pk => pk).ToList().ForEach(pk =>
{
AddPackageItem(pit, pk, repository);
});
并在 where 子句中使用 ID 而不是导航属性然后它可以工作,有人知道问题是什么吗?