我们是否可以使用传递表值来调用实体框架查询
本文关键字:调用 实体 框架 查询 可以使 是否 我们 | 更新日期: 2023-09-27 17:56:12
是将表名作为参数传递并使用 make 通用函数从 db 获取记录的任何类型的方法
string table = "tbl_Category";
int Id = Class.getLastId(table);
类.aspx
public static int getLastId(string table)
{
int lastID = 0;
using (HatnEntities context = new HatnEntities())
{
// Fetch Id of last record from table
var result = (from c in context.tbl_Category.OrderByDescending(u => u.Id) select new { Id = c.Id }).FirstOrDefault();
^
//any way to use table name from parameter value"+table+"
if (result != null)
{
lastID = Convert.ToInt32(result.Id);
}
obj.Id = lastID + 1;
context.tbl_Category.Add(obj);
context.SaveChanges();
}
return status;
}
请让我知道是否有可能
您可以使用 Set(),这需要传递表字符串参数,您必须从程序集中获取 Type。
context.Set<TypeFromTableStringParameter>() ...
如果您只想能够访问 EF 中的任何表,则必须执行以下操作:
public static int getLastId<T>()
where T : PrimaryKey
{
using (HatnEntities context = new HatnEntities())
{
// Fetch Id of last record from table
var result = (from c in context.Set<T>().OrderByDescending(u => u.Id) select new { Id = c.Id }).FirstOrDefault();
var lastID = 0;
if (result != null)
{
lastID = Convert.ToInt32(result.Id);
}
obj.Id = lastID + 1;
context.Set<T>().Add(obj);
context.SaveChanges();
}
// not sure where this comes from?
return status;
}
public abstract class PrimaryKey
{
public int Id { get; set; }
}
所有实体都需要继承(扩展)PrimaryKey
,以便您根据属性Id
Select
、Where
或FirstOrDefault
(等)。