1

次のテーブルがあるとします。

Fruits
 - FruitID       INT PK
 - FruitName     NVARCHAR(30)
 - FruitStatusID INT FK: Statuses

Statuses
 - StatusID      INT PK
 - StatusName    NVARCHAR(30)

これらの状況で、データベース内の果物の名前とそのステータスの両方を更新するにはどうすればよいですか?:

  1. 以前の L2E コールから来たフルーツの一部を更新する
  2. FruitID に対応する整数が与えられます (つまり、最初から完全な Fruit オブジェクトが手元にありません)。

VB または C# で問題ありません。

4

2 に答える 2

2

これは機能しますが、私が望んでいたものではありません:

int StatusID = 4; // Some ID
Fruit.FruidIDReference.EntityKey = 
    New EntityKey("MyEntities.Statuses", "StatusID", StatusID)

確かに、文字列のハードコーディングを必要としない、これを行うためのよりクリーンな方法があります (タイプミスをすると実行時の例外が発生します)。

于 2009-05-05T19:54:36.447 に答える
0

Fruit オブジェクトが別のメソッドに渡された場合、次のことができます。

  1. Fruit とともにコンテキスト オブジェクトへの参照を渡し、SaveChanges() を呼び出します。

  2. ダウンレベル メソッドで 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();
于 2009-05-05T19:55:30.767 に答える