EF4:将EntitySet指定为字符串

时间:2010-12-06 13:25:15

标签: c# linq entity-framework-4 linq-to-entities

我有一个包含许多单个孤立表的数据库,我需要将它们的内容填充到它们的实体中。

目前我的每张桌子都有这样的东西:

try
{
    using(DBContext context = new DBContext())
    {
        var vehicleTypes = context.VehicleTypes;
        return vehicleTypes;
    }
}
catch(Exception ex)
{
//handle error
}

我正在寻找的东西最好被描述为:

var vehicleTypes = context.GetEntitySet(VehicleEntity);
var buildingTypes = context.GetEntitySet(BuildingEntity);

其中VehicleEntityBuildingEntity(...)是实体模型中的实体。 我知道我没有明确地提供这个选项,但以类似方式的东西会很好。扩展方法也是一种选择......

我正在使用EntityFramework 4.0,POCO自我追踪实体(无代理)。

由于

编辑:我的最新尝试是:

    public static IEnumerable<TEntity> GetTableContent<TEntity>() where TEntity:class
    {
        try
        {
            using (var context = new DBEntities())
            {
                var result = context.ExecuteStoreQuery<TEntity>("SELECT * FROM " + typeof(TEntity).Name); //the table names correspond to Entity type class names
                return result;
            }
        }
        catch (Exception ex)
        {
            //handle error...
        }
    }

但是我收到了错误:

The data reader is incompatible with the specified 'DBEntities.MyEntity'. A member of the type, 'Id', does not have a corresponding column in the data reader with the same name.

这是真的 - 名称不匹配 - 但我认为它会根据edmx定义从查询中映射表格?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:-3)

在尝试使其成为“通用”

之前,先使用实际有效的代码
result = context.ExecuteStoreQuery<Something>("SELECT SOMETHING_ID AS ID, ..., FROM SOMETHING...");