-2

我的目标是创建一个删除函数,该函数使用 LINQ 通过查找与记录的主键匹配的用户输入的 id 从数据库表中删除记录。

  • 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 回答