美好的一天,
我正在使用实体框架来更新数据库中的字段。我想要更新的对象中有另一个对象,在这种情况下会有一对多的关系。
public class Rental
{
public int Id { get; set; }
[Required]
public Customer Customer { get; set; }
[Required]
public Movie Movie { get; set; }
public string SomeValue{get;set;}
public DateTime DateRented { get; set; }
public DateTime? DateReturned { get; set; }
}
电影实体:
public class Movie
{
public int Id { get; set; }
public string Name{get;set;}
public byte NumberAvailable { get; set; }
}
当我更新租赁表时
using (var db = new MyContextDB())
{
var result = db.rental.SingleOrDefault(r => id == ID);
if (result != null)
{
result.SomeValue = "Some new value";
db.SaveChanges();
}
}
我收到一条错误消息,指出需要电影和客户。我可以看到结果不包括Movie对象,也没有Customer对象(都是null)。 有没有什么方法可以帮助我更新Rental,而不必像这样使用Include? p>
var result = db.rental.Include(i=>i.Movie)
.Include(i=>i.Customer).SingleOrDefault(r => id == ID);
或再进行两次查询以带来客户和电影并将其分配为
result.Customer=Customer;`result.Movie=movie;`
答案 0 :(得分:0)
您需要在上下文对象上将Configuration.ValidateOnSaveEnabled设置为false。
using (var db = new MyContextDB())
{
var result = db.rental.SingleOrDefault(r => id == ID);
if (result != null)
{
result.SomeValue = "Some new value";
db.Configuration.ValidateOnSaveEnabled = false; // <-- set flag to false
db.SaveChanges();
}
}