使用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);
可以建议实现类的方法。
您可以定义一个泛型类,而不仅仅是一个方法:
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);