我是新手到實體框架5.我嘗試在網站中搜索,但有一些類似的問題,但沒有答案。EntityFramework創建一個新的對象並將其添加到其導航屬性
我發佈一條消息對象和具有導航屬性文件
public partial class Announcement
{
//remove other properties
public virtual ICollection<File> Files { get; set; }
}
在SQL Server有公告表,文件表和AnnouncementFiles表 僅具有2個字段[AnnouncementId]和[FILEID]。 Senario是:我創建了一個新的公告,但所有文件已經存在於數據庫中。 代碼是在這裏:
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元素。
我不能改變表結構,所以有沒有辦法做到這一點?有的帖子說用附方法卻公佈。文件沒有這個方法。 謝謝。
我發現這個問題,這是我需要做兩個領域AnnouncementFiles作爲主鍵,我不知道爲什麼,我不改變任何代碼我項目。這是EF5和之前版本之間的區別嗎? – Bubble