假设我有这些表:
Fruits
- FruitID INT PK
- FruitName NVARCHAR(30)
- FruitStatusID INT FK: Statuses
Statuses
- StatusID INT PK
- StatusName NVARCHAR(30)
在这些情况下,如何更新Fruit的名称及其在数据库中的状态?:
VB或C#很好,谢谢!
答案 0 :(得分:2)
This works但不是我所希望的:
int StatusID = 4; // Some ID
Fruit.FruidIDReference.EntityKey =
New EntityKey("MyEntities.Statuses", "StatusID", StatusID)
当然,有一种更简洁的方法可以做到这一点,不需要硬编码字符串(如果我输入错字,会引入运行时异常)。
答案 1 :(得分:0)
如果将Fruit对象传递给另一个方法,您可以:
传递对上下文对象的引用以及Fruit并调用SaveChanges()
在下层方法中对Fruit对象进行编辑,并在调用方法中调用SaveChanges()(如果要避免不必要的DB调用,可以检查它是否已被修改。)
代码:
//Change the name
FruitEntities fe = new FruitEntities();
Fruit f = fe.Friuts.First();
f.FruitName = "NewName";
fe.SaveChanges();
//Get a fruit by ID and change the status
//Statuses will need to be included as an Entity in your model with an association to Fruits
int Id = 2;
int newStatusID = 0;
FruitEntities fe = new FruitEntities();
Fruit f = (from x in fe.Fruits
where x.FruitID == Id
select x).First();
Status s = (from y in fe.Statuses
where y.StatusID = newStatusID
select y).First();
f.Status = s;
fe.SaveChanges();