0

好的,这个问题对我来说也很难解释,因为我是非常新的泛型和 C# 的许多高级特性。我正在尝试使用泛型类型编写一个方法,该方法将用于实例化该类型的新对象,并使用类型信息访问我的 Entity Framework 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 访问我的 dbcntext 中的类?
我什至不确定这是可能的。我很感激你们/女孩可以提供的任何帮助。

4

2 回答 2

4

你想这样做:

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

我注意到您的上下文是班级成员。以这种方式使用 DbContext 时要非常小心,DbContexts 被设计为短命的,如果你在程序的生命周期内一直使用它,它会变得越来越慢,并且用户越来越多的内存而不放弃它。

DbContext 不会进行真正的内存管理,也不会修剪其缓存,因为它预计会相对较快地被销毁。

于 2013-05-19T02:39:27.167 回答
0

这就是你所追求的:

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

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

于 2013-05-19T02:39:45.527 回答