-2

私の目標は、レコードの主キーと一致するユーザー入力の ID を見つけることによって、LINQ を使用してデータベース テーブルからレコードを削除する削除関数を作成することです。

  • MyDBEntitiesClassは、検索する DataTable を関数に渡す必要がある引数です。

  • IDontKnowWhatTypeは、特定する際に助けを求めているタイプです。

  • MyPrimaryKeyは、MyDBEntitiesClass の主キーを参照するものに置き換える必要があります。

  • TestDatabaseEntitiesは、既存の SQL サーバー データベースからエンティティ モデルを生成することによって作成された接続文字列の名前です。

public static void DeleteFrom(IDontKnowWhatType MyDBEntitiesClass)
{

var dbEntities = new TestDatabaseEntities(); 

    //Prompt the user for an ID
    Console.WriteLine("Select ID for deletion.");

    // save the ID to IDtoMark
    int IDtoMark = int.Parse(Console.ReadLine());
    try
    {
        // return a single record that matches IDtoMark 
        MyDbEntitiesClass x = dbEntities.MyDbEntitiesClass.Single(x => x.myPrimaryKey == IDtoMark);
        //Remove the marked record, and save changes
        dbEntities.MyDbEntitiesClass.Remove(x);
        dbEntities.SaveChanges();
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}
4

1 に答える 1

0

これは、リポジトリ パターンを実装することで実現できます。

エンティティフレームワークを使用していると思います。そのために、ジェネリック クラスがあります。

public class Repository<T> where T : class
{
    private DbContext dbContext;
    private DbSet<T> DbSet { get; set }
    public Repository(dbContext)
    {
       this.dbContext = dbContext;
       this.DbSet = this.dbContext.DbSet<T>();
    }

    public void Delete(int id)
    {
         T entity = DbSet.Find(id);
         DbSet.Remove(entity);
         dbContext.Save();
    }

}
于 2012-10-17T17:53:30.383 に答える