我是 Entity Framework 5 的新手。我尝试在网站中搜索,有一些类似的问题但没有答案。
我有一个 Announcement 对象并有导航属性 Files
public partial class Announcement
{
//remove other properties
public virtual ICollection<File> Files { get; set; }
}
在sql server中有Announcement表,File表和AnnouncementFiles表只有[AnnouncementId]和[FileId]两个字段。情景是:我创建了一个新的公告,但所有文件都已经存在于数据库中。代码在这里:
public void CreateAnnouncement(Announcement announcement, List<Guid> fileIds)
{
using (var db = new MyDbEntities())
{
var files = db.Files.Where(f => fileIds.Contains(f.Id));
db.Announcements.Add(announcement);
foreach (var file in files)
{
announcement.Files.Add(file);
}
db.SaveChanges();
}
}
并且出现类似(我的.net框架不是英文的)无法更新EntitySet“AnnouncementFiles”的错误,因为它有一个DefiningQuery,但没有支持currnet元素的操作。
我无法更改表结构,那么有什么办法吗?一些帖子说使用附加方法,但公告。文件没有这种方法。谢谢。