1
例如,我有以下代碼:更新與其他檢查實體
Product p = new Product { Id = 5, Name = "milk" };
....
cnx.Product.Attach(p);
cnx.Entry(p).State = System.Data.EntityState.Modified;
cnx.SaveChanges();
EF生成以下查詢:
update Product set Name = @parameter1 where Id = @parameter2 ...
我怎麼能強迫EF一個額外的檢查添加到更新查詢,例如:
update Product set Name = @parameter1 where Id = @parameter2 AND CategoryId = @parameter3
我再舉一個例子,以更好地理解這個問題:
public partial class SomeEntity
{
public int SomeEntityId { get; set; }
public string Name { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
}
我有一個MVC應用程序,我在那裏存放UserId
在用戶登錄後的會話。在某些頁面,用戶可以編輯SomeEntity
。下面是一個方法:
[HttpPost]
public EditSomeEntity(int someEntityId,string name)
{
int userId = (int)Session["UserId"];
SomeEntity updated = new SomeEntity
{ SomeEntityId = someEntityId,Name = name, UserId = userId };
var MyContext cnx = new MyContext();
cnx.SomeEntity.Attach(updated);
cnx.Entry(updated).State = System.Data.EntityState.Modified;
cnx.SaveChanges();
return View();
}
所以,我需要的是EF生成:
update SomeEntity set Name = @parameter1 where SomeEntityId = @parameter2 AND UserId = @parameter3
因爲SomeEntityId
從客戶端來了很容易可以改變的,所以我需要檢查特定的實體對待特定用戶。
爲什麼'CategoryId'很重要?你是說有多個產品具有相同的'Id'? – SOfanatic
沒有它的例子 – user2448388