使用linq来优化通用存储库的使用

本文关键字:存储 linq 优化 使用 | 更新日期: 2023-09-27 18:08:45

我有一个像这样的通用存储库类:

public class Repository : IDisposable
{
    public  static DataContext context { get; set; } 
    public static void Insert<T>(T item) where T : class
    {
        try
        { 
            var table = context.GetTable<T>(); 
            table.InsertOnSubmit(item);
            context.SubmitChanges();
        }
        catch (Exception)
        {
            throw;
        }
    } 
    public void Dispose()
    {
        context.Dispose();
    }
} 

上面一个是我的通用类插入实体使用Linq到sql。
我在我的数据上下文中共有10个实体,我正在编写10个这样的插入方法(示例我提供3个方法)。

public void AddStudent(Student st)
{ 
    Repository.Insert<Student>(st);
}
public void AddEmployee(Employee emp)
{ 
    Repository.Insert<Employee>(emp);
}
public void AddStudent(Product prod)
{ 
    Repository.Insert<Product>(prod);
}
像这样,我有10个方法。是否有一种方法来优化这个代码。像这样我想创建一个类与添加方法,我会使用这个添加方法整个我的应用程序在哪里需要。
public class Class1
{
    public void Add(Table table)
    {
        Repository.Insert<Table>(table);
    }    
}

我想这样使用Class1 cls1 = new Class1(); cls1.Add(StudentObject);

可以建议实现类的方法。

使用linq来优化通用存储库的使用

您可以定义一个泛型类,而不仅仅是一个方法:

public class Repository<T> : IDisposable
    {
        public  static DataContext context { get; set; } 
        public static void Insert(T item)
        {
            var table = context.GetTable<T>(); 
            table.InsertOnSubmit(item);
            context.SubmitChanges();      
        } 
        public void Dispose()
        {
            context.Dispose();
        }
    } 

然后得到以下内容,而不是所有其他方法:

var repo = new Repository<Product>();
repo.Insert(aProduct);