ينق واحدة لكثير من إدراج عندما العديد موجود بالفعل
سؤال
وهكذا أنا جديدة على LINQ ذلك حذر من أن يكون ما أفعله قد تكون غبيا تماما!
ولقد حصلت على جدول caseStudies وجدول الخدمات مع كثير لكثير من relasionship
ودراسات الحالة موجودة بالفعل، وأنا أحاول لادخال خدمة في حين ربط بعض دراسات الحالة التي توجد بالفعل. كنت على افتراض أن شيئا مثل هذا العمل؟
Service service = new Service()
{
CreateDate = DateTime.Now,
CreatedBy = (from u in db.Users
where u.Id == userId
select u).Take(1).First(),
Description = description,
Title = title,
CaseStudies = (from c in db.CaseStudies
where c.Name == caseStudy
select c),
Icon = iconFile,
FeatureImageGroupId = imgGroupId,
UpdateDate = DateTime.Now,
UpdatedBy = (from u in db.Users
where u.Id == userId
select u).Take(1).First()
};
ولكن هذا ليس صحيحا لأنه يشكو
لا يمكن تحويل ضمنيا نوع 'System.Linq.IQueryable' إلى 'System.Data.Objects.DataClasses.EntityCollection'
ويمكن لأي شخص أن تريني الطريق الصحيح.
وشكرا مقدما
المحلول
ويو لديك لإضافة نتيجة الاستعلام إلى دراسات الحالة جمع بدلا من محاولة ليحل محله.
var service = new Service { ... };
foreach (var caseStudy in db.CaseStudies.Where(s => s.Name == caseStudyName)
{
service.CaseStudies.Add(caseStudy);
}
ويمكنك لف هذا في أسلوب الإرشاد والحصول على جملة لطيفة.
public static class ExtensionMethods
{
public static void AddRange<T>(this EntityCollection<T> entityCollection,
IEnumerable<T> entities)
{
// Add sanity checks here.
foreach (T entity in entities)
{
entityCollection.Add(entity);
}
}
}
والآن يمكنك الحصول على ما يلي.
var service = new Service { ... };
service.CaseStudies.AddRange(db.CaseStudies.Where(s => s.Name == caseStudyName));
لا تنتمي إلى StackOverflow