如何从EF生成的类中查找映射表

时间:2013-07-17 04:51:23

标签: c# entity-framework asp.net-mvc-4

我有一个mvc 4应用程序,它首先是实体框架数据库。因此,许多类都是通过EF基于数据库表生成的。

目前,我创建了一种方法来从表中检索数据并将其显示在下拉列表中,该工作正常。但是,我想将该方法修改为泛型类型方法,并将类类型作为方法参数传递,我希望c#代码在数据库中查找映射表并检索数据。

以下是我修改过的方法 谢谢你的帮助!

   public static SelectList FromDbTableToSelectList<T>() where T: class 
    {
        var db = new TableEntities();
        //find the mapping database table

        Dictionary<Guid, string> dic = db.MappingTable.ToDictionary(v => v.tableColumn1, v => v.tableColumn2);

        return new SelectList(dic, "Key", "Value");
    }

1 个答案:

答案 0 :(得分:0)

我不明白你的代码是做什么的。但是,有一个技巧可以找到实体的映射表名称(EF术语表中的Entity Set Name)。

假设您的数据库中有一个名为Products的表。如果在选中Pluralize and singularize选项的情况下创建模型,EF将创建名为Product的实体类。

然后,每当执行查询时,EF命名约定都认为您的表名是dbo.Products。这是一般规则 - 实际上是命名约定。

另一方面,如果取消选中Pluralize and Singularize选项,EF会为您创建一个名为Products的实体类,在这种情况下,该类具有相同的名称。

因此,根据P&S选项的选择,您可以从实体名称推断表名称,并且您不需要任何代码...