C# EF4:获取指定为字符串的EntitySet
我有一个包含许多单独表的数据库,我需要将它们的内容填充到它们的实体中 目前,我为每个表准备了如下内容:C# EF4:获取指定为字符串的EntitySet,c#,linq,entity-framework-4,linq-to-entities,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 vehicleTy
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);
我所追求的最好描述如下:
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);
其中车辆实体
,建筑实体
(…)是实体模型中的实体。
我知道我没有明确的选择,但是类似的方式会很好。扩展方法也是一个选项
我正在使用EntityFramework4.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...
}
}
公共静态IEnumerable GetTableContent(),其中tenty:class
{
尝试
{
使用(var context=new DBEntities())
{
var result=context.executestrequery(“SELECT*FROM”+typeof(tenty.Name);//表名对应于实体类型类名
返回结果;
}
}
捕获(例外情况除外)
{
//处理错误。。。
}
}
但我得到了一个错误:
数据读取器与指定的“DBEntities.MyEntity”不兼容。“Id”类型的成员在数据读取器中没有同名的对应列。
这是真的-名称不匹配-但我想它会从基于edmx定义的查询映射表?我如何才能做到这一点?在尝试将其变为“通用”之前,先从实际有效的代码开始
result=context.ExecuteStoreQuery(“选择某物作为ID,…,来自某物…”);
这有什么帮助?如果你只是好奇它是否有效——它确实有效(我试过)。但是,这不是我所需要的——我需要它是“通用的”(也就是说,我需要它能够映射到edmx定义),那么为什么要进行存储查询呢?这只会让事情变得更难。ObjectContext.CreateObjectSet
有什么问题?我以为你在问如何使用ExecuteStoreQuery
同意。使用CreateObjectSet
——您可以通过多重化服务为泛型动态执行此操作。