我是这样的通用存储库类:
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插入实体的通用类 我在我的datacontext中总共有10个实体,我正在编写10个这样的Insert方法(例如我提供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种方法。有没有办法优化此代码。像这样
我想用Add方法创建一个类,我将使用这个add方法整个我的应用程序,只要它是必需的。
public class Class1
{
public void Add(Table table)
{
Repository.Insert<Table>(table);
}
}
我想像Class1 cls1 = new Class1(); cls1.Add(StudentObject);
可以建议实现类的方法。
答案 0 :(得分:1)
您可以定义泛型类而不仅仅是方法:
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);