假设我有这两个 POCO:
public class Album {
public int ID { get; set; }
[Required]
public string Title { get; set; }
public short Rating { get; set; }
public int ArtistID { get; set; }
[Required]
public virtual Artist Artist { get; set; }
}
public class Artist {
public int ID { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Album> Albums { get; set; }
}
然后我执行一些这样的代码:
using (PickContext db=new PickContext()) {
Album pick=db.Albums.SingleOrDefault(a => a.ID==pickID);
if (pick==null) return;
pick.Rating=4;
db.SaveChanges();
我很惊讶我得到了这样的验证异常:
属性:“艺术家”,错误:“艺术家字段是必需的。”
当我更改查询以包含艺术家时:
Album pick=db.Albums.Include("Artist").SingleOrDefault(a => a.ID==pickID);
我不再有例外。如果我不告诉 EF 填充所有属性,并且它们不是必需的,它会简单地覆盖数据库中的这些 FK 吗?我原以为如果我检索一个实体并且不分配属性,则该属性不会在数据库中更改。这不是真的吗?