c#仅使用类型信息访问实体框架类

本文关键字:访问 实体 框架 信息 类型 | 更新日期: 2023-09-27 18:14:20

好吧,这个问题对我来说也很难解释,因为我是一个非常新的泛型和c#的许多高级特性。我正在尝试使用泛型类型编写一个方法,该方法将用于实例化该类型的新对象,并使用类型信息访问我的实体框架5.0 dbContext中的正确类。我没有编译,但我相信代码会更好地解释我的问题,因为我的措辞可能太模糊了,无法真正解释我想做的事情。

代码
public void AddNewRecord<T>() where T : new()  
{    
    T record = new T();  
    _Context.T.Add(record);  //HERE IS MY PROBLEM T would normally be tbl_x
    _BindSource.DataSource = _Context.T.Local.ToBindingList(); //Same goes for here  
}

如何使用T访问dbcontext中的类?
我甚至不确定这是否可能。非常感谢大家的帮助。

c#仅使用类型信息访问实体框架类

你想这样做:

_Context.Set<T>().Add(record);
_BindingSource.DataSource = _Context.Set<T>().Local.ToBindingList();

我注意到你的上下文是一个类成员。以这种方式使用DbContext时要非常小心,DbContext被设计为短寿命的,如果你在程序的生命周期中一直使用它,它会变得越来越慢,占用越来越多的内存。

DbContext不进行内存管理,也不修剪它的缓存,因为它希望相对较快地被销毁。

这就是你要找的:

_Context.Set<T>().Add(record);

在这里查看我的完整示例https://github.com/lukemcgregor/StaticVoid.Repository/blob/master/StaticVoid.Repository.EntityFramework/DbContextRepositoryDataSource.cs