我有一个包含许多单个孤立表的数据库,我需要将它们的内容填充到它们的实体中。
目前我的每张桌子都有这样的东西:
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);
其中VehicleEntity
,BuildingEntity
(...)是实体模型中的实体。
我知道我没有明确地提供这个选项,但以类似方式的东西会很好。扩展方法也是一种选择......
我正在使用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定义从查询中映射表格?我怎样才能做到这一点?
答案 0 :(得分:-3)
在尝试使其成为“通用”
之前,先使用实际有效的代码result = context.ExecuteStoreQuery<Something>("SELECT SOMETHING_ID AS ID, ..., FROM SOMETHING...");