आम तौर पर ईएफ डेटासेट का समर्थन नहीं करता है। यदि आप ईएफ के साथ लोड किए गए डेटा के साथ डेटासेट्स को पॉप्युलेट करना चाहते हैं तो आपको इसके लिए अपनी कार्यक्षमता प्रदान करनी होगी। यहाँ मैं एक उदाहरण कैसे क्वेरी के साथ प्राप्त परिणाम से DataTable ऑब्जेक्ट को भरने के लिए मौजूद:
public static class IEnumerableExtensions
{
public static DataTable ToDataTable<TEntity>(this IEnumerable<TEntity> entities)
{
DataTable table = new DataTable();
IEnumerable<PropertyInfo> properties = typeof(TEntity)
.GetProperties()
.Where(p => !p.PropertyType.IsClass || p.PropertyType == typeof(string))
foreach(string propertyName in properties.Select(p => p.Name))
{
table.Columns.Add(propertyName);
}
foreach(object item in entities)
{
List<object> propertiesValues = new List<object>();
foreach (PropertyInfo property in properties)
{
propertiesValues.Add(property.GetValue(item));
}
table.Rows.Add(propertiesValues.ToArray());
}
return table;
}
}
आप के रूप में इस विस्तार विधि तो उपयोग कर सकते हैं इस प्रकार है:
DataTable table = context.People.ToDataTable();
आप तो तालिकाओं के बीच संबंधों को लागू करना चाहते हैं तर्क जो आपको करना है वह अधिक जटिल होगा। आपको डेटाटेबल ऑब्जेक्ट्स की चाइल्डरेलेशंस प्रॉपर्टी का उपयोग संबंधों से बांधने के लिए करना चाहिए। फिर आपके डेटाटेबल ऑब्जेक्ट्स जिन्हें आप डेटासेट में डाल सकते हैं।