无法确定数据库实体的必要类型

时间:2012-10-17 17:38:32

标签: c# entity-framework

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

  • MyDBEntitiesClass 是需要传递函数的参数,它告诉它要搜索的DataTable。

  • IDontKnowWhatType 是我要求帮助确定的类型。

  • MyPrimaryKey 需要替换为引用MyDBEntitiesClass主键的内容。

  • TestDatabaseEntities 是通过从现有SQL Server数据库生成实体模型而创建的连接字符串的名称。

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);
    }
}

1 个答案:

答案 0 :(得分:0)

您可以通过实现Repository Pattern来实现此目的。

我猜你正在使用实体框架。为此你有通用类。

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();
    }

}