动态地在运行时通过类型识别正确的DbSet

时间:2018-06-14 13:03:58

标签: generics frameworks entity dbset identify

我想知道是否有人可以帮我解决我的问题: 我正在使用Entity Framework构建一个用于数据库访问的应用程序。

我有一个名为MoxRecord的抽象记录类

// To save all pages
$allpages = array();
$pages = get_pages();
  foreach ($pages as $page) {
    // function array_push to insert the data at the end of the array
    array_push($allpages, $page->post_title);
  }
// Show the array
print_r($allpages);

对于我的测试,还有2个记录类继承自此主类

$i = 0; // counter
$allpages = array(); // array to save all pages
$pages = get_pages();
  foreach ($pages as $page) {
    $allpages[$i] = $page->post_title; // save the value in the array by an index
    $i++; // increment the counter
  }

print_r($allpages);

在我的数据库上下文类中,我添加了2个DbSets

public abstract class MoxRecord
{
    public int Id { get; set; }
}

目前情况...... 现在我想用签名

构建一个通用数据getter方法
public class Contact : MoxRecord {}
public class Contactgroup : MoxRecord {}

此方法看起来像是

public virtual DbSet<Contact> Contacts { get; set; }
public virtual DbSet<Contactgroup> Contactgroups { get; set; }

只要只有2个记录类,这种方法就是'ok' - 但我的最终应用程序将包含更多记录类型。

是否有一种简单的方法可以通过方法提供的对象自动识别正确的DbSet?

我得到的一个想法就是创建一个包含MoxRecord类型对象的DbSet,但对我来说这看起来不是一个好习惯。

当然,有相同想法的方法来编写数据等等。

0 个答案:

没有答案