Với bối cảnh Entity Framework 6 đơn giản sau đây, tôi đang cố gắng đưa vào Danh sách với các thực thể nhưng gặp vấn đề với cách truyền (tôi tin) qua phản xạ.Làm thế nào để đúc DbSet <T> vào Danh sách <T>
public class FooContext : DbContext
{
public virtual IDbSet<FooClass> Foo { get; set; }
//...
}
public class FooClass
{
public int Id{ get; set; }
public string Name {get; set; }
//...
}
public main()
{
using (var context = new FooContext())
{
var sets = typeof(FooContext).GetProperties().Where(pi => pi.PropertyType.IsInterface && pi.PropertyType.GetGenericTypeDefinition().ToString().ToLower().Contains("idbset"));
foreach (var set in sets)
{
//When I debug and enumerate over 'value' the entire results are shown so I believe the reflection part is OK.
var value = set.GetValue(context, null);
//Always returns null. How can I cast DbSet<T> to List<object> or List<T>?
var list = value as List<object>();
//...
}
}
}
Tôi đang làm điều này cho phương pháp tiện ích cho một số thử nghiệm tích hợp mà tôi đang thực hiện. Tôi đang cố gắng để làm điều này mà không cần sử dụng trực tiếp các cuộc gọi SQL nội tuyến (sử dụng SqlConnection và SqlCommand vv) để truy cập cơ sở dữ liệu (như kho dữ liệu có thể thay đổi thành Oracle, vv).
Bạn có thể truyền đến giao diện 'IEnumerable' –
' set.GetValue (context, null) 'trả về một' đối tượng'.Bạn đang cố gắng truyền nó tới 'List
Một 'DbSet <>' * không phải là một danh sách *, và không phải là một 'DbSet 'cũng không phải là một' Danh sách 'là một' Danh sách